Блог им. maxim

Вопрос профессионалам MQL4. Почему не работает код?

#property copyright ""
#property link      ""
#property indicator_chart_window
int Orders;
//+------------------------------------------------------------------+
int start()
  {
   if (Orders>OrdersTotal()) AlertOrder();
   Orders=OrdersTotal();
   return(0);
  }
//+------------------------------------------------------------------+
void AlertOrder()
{
   string txt;
   double ocp;
   int i=OrdersHistoryTotal()-1;
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
   {                                    
      ocp=OrderClosePrice();
      if (ocp==OrderStopLoss()) txt=«SL»;
      if (ocp==OrderTakeProfit()) txt=«TP»;
      string lots=DoubleToStr(OrderLots(),2);
      SendNotification(«Ордер „+“(»+lots+")"+" закрыт по "+txt+" "+
      DoubleToStr(ocp,Digits)+" прибыль "+DoubleToStr(OrderProfit(),2));
     
}  }
//+------------------------------------------------------------------+
29 комментариев
А чо каментов то нет?
Тимофей Мартынов, интересно кто так минусы ставить любит?)
avatar
кусок кода на главной, что-то новое)
avatar
Orders всегда меньше или равно OrdersTotal()
avatar
Scalloped, да, спасибо, читканул документацию
avatar
А слипаж? Уровни OrderStopLoss и OrderTakeProfit не обязательно будут равны цене исполнения OrderClosePrice — СЛ и ТП это же стопы, а не лимитники, соответственно по маркету и исполняются. И, вообще, при такой схеме проверки могут быть коллизии. Я бы проверку делал через switch.
avatar
из документации:
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{… }
else {
Print(GetLastError() );
}

да и в первый if-блок не мешает GetLastError пихнуть
avatar
huyax, iRus,
да какая разница, что в обвязке наворочено, если сам алгоритм определения «а не стоп ли это сработал» — ущербный сам по себе?

Да и идея сама — тоже ущербна. Правильно говорят — стопы придумали для дураков. Держать их в явном виде и показывать говнокухне (пусть даже и брокеру) — верх неосмотрительности. Держать их надо в следящем коде и крыть по маркету.
avatar
ES1667, Тогда проскальзывания будут нефиговыми. Получишь не ту цену, которую хотел
avatar
huyax, извини, но чушь это.
Кухня тебя и так обует и собъет твой стоп без слипажа и объяснений, а на бирже — уж на каком проводе сидишь. И, что значит «нефиговым»? В цифрах? Давай уж поконкретней будем, а?
avatar
ES1667, все зависит от брокера!
avatar
ES1667, ну вот сегодня ночью все стопы по 6Е у всех везде сбили — и на глобексе, и в кухнях — везде — никакой разницы, что кухня, что биржа в этом плане нету)) а на некоторых площадках — например на фортс — всякие спайки идиотские еще и почаще, чем на ОТС бывают ))

единственное что кухни бабло могут тупо не вернуть — это да, есть такое дело))
avatar
karapuz, ну это некорректно. Организованный движняк сравнивать со стоп-хантингом. Да и по вчерашнему дню — даже если предположить, что кухня тебя не фронтраннит, то потери твои будут на длину провода. Мой провод всегда был короче, чем время исполнения во всех кухнях, в которых я не торговал.
avatar
ES1667, да это и был стоп=хантинг, только чуть более масштабный… что касается времени (а точней качества) исполнения то в приличных ECN оно даже получше чем биржевое бывает… ))
avatar
karapuz, ага. А главный хантер — это Бен. Ну, бог с ними :)
Я про ECN ничего сказать не могу — с кухонного форекса сразу на Запад перебрался.

А по уму, кивания на скорость (я и себя имею ввиду) меня бесят аж веко дергается :) Вот смотри, я начал торговать в кухне, где исполнение было 2-5 сек, спайки, спреды, полный беспредел, вобщем, весь джентльменский набор. Щаз я сам на коротком проводе (не выдам :). Виртуалка в Чикаге — 10 мс. И еще что-то киваем на исполнение :) У меня полавтомат считает с точностью до 100 мксек. HFT-шники работают с десятками мксек. А мы — слипаж больше, слипаж меьше… Грустно все это… Торговать учиться надо :) Это я и себе в т.ч.
avatar
ES1667, уважаемый, ты бы приумирил свои эмоции, мне просто надо настроить скрипт, который уведомляет меня о том, что сделка закрылась, что ты психуешь то сразу?
avatar
Макс, стоп! Где ты увидел мои «эмоции», где «психуешь»? Пруф фстудию.

А приумерить — ты советуй… ну, своей поварешке ровнее щи наливать.

«скрипт, который уведомляет меня о том, что сделка закрылась» — причем тут тогда ТП и ПЛ? Ты выложил один код, а имеешь ввиду и рассуждаешь совсем о другом…
avatar
ES1667, ну ты как-то нервно пишешь, мне кажется!)

Так сделка закрывается либо по тейку, либо по стопу, и я хочу это сразу увидеть, скрипт нашел, но он не ничего не делает.

По поводу поварешки — не понял, кого ты имеешь в виду.

По поводу валютного рынка, у нас в банке торгуют трейдеры с опытом нескромным, соответственно, суммы тоже достаточно большие, счет был открыт через такого же брокера, естественно, не очень популярного среди физиков, но всегда все было замечательно и никаких стопосъемов не было, я сам лично сравнивал с данными из Блумберга. Именно поэтому, я утверждаю, что надо просто правильно выбрать брокера и не париться! Естсественно, если имеется большой депозит, то гораздо приятней действительными активами торговать и от этого не стоит отказываться!)
avatar
Макс, да не парься ты. Показалось — так убедись в себе и выкати по полной. Я извинюсь, если что действительно не так.

Поварешка — черпак. Все мимо миски норвовит хоть каплю, но пролить :)

Я с торговал под двумя или тремя банками. Поверь — хлыщи еще те. В МТ все предусмотрено, чтобы обуть клиента.

Политика держать стопы в ДЦ — порочна сама по себе, независимо от кода. Управляя ими самостоятельно ты можешь сам их и мониторить без этих костылей.

А если ты опять меня не обманул и действительно речь ведешь ТОЛЬКО о ТП и СЛ, то вообще не связывайся с этим скриптом — смотри на знак OrderProfit и будет тебе щазтье :)
avatar
О, нифига, я на плюсики не рассчитывал! Кароч, я спешил, не дописал!

Этот скрипт отсылает уведомлении при закрытии сделки, компилируется ок, но почему-то не пашет!
avatar
Scalloped, так нея это писал, поэтому и спрашиваю!
avatar
#property copyright ""
#property link ""
#property indicator_chart_window
int Orders=1;
//+------------------------------------------------------------------+
int start()
{
if (Orders>OrdersTotal()) AlertOrder();
Orders=OrdersTotal();
return(0);
}
//+------------------------------------------------------------------+
void AlertOrder()
{
string txt;
double ocp;
int i=OrdersHistoryTotal()-1;
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
ocp=OrderClosePrice();
if (ocp==OrderStopLoss()) txt=«SL»;
if (ocp==OrderTakeProfit()) txt=«TP»;
string lots=DoubleToStr(OrderLots(),2);
string str=«Ордер » + DoubleToStr(OrderTicket(),0)+ " lots " + DoubleToStr(OrderLots(),2) + " закрыт по " + txt + " " +
DoubleToStr(ocp,Digits) + " прибыль " + DoubleToStr(OrderProfit(),2);
Comment(str);

}
}
//+------------------------------------------------------------------+

здесь для наглядности выводит в коммент можно отослать SendNotification
avatar
ELMARE, благодарствую!)
avatar
Чо за гад минусит от души всех подряд? Всех правлю, как могу.
avatar

теги блога Марина

....все тэги



UPDONW
Новый дизайн