Нужна помощь мудрецов MQL

 

Приветствую всех, кто владеет MQL. Не знаю к кому обратится, но надеюсь что Вы поможете.

Пытался написать эксперта который в период с 00:00 по 00:15 (по времени брокера) мог бы выставить отложники. Buy stop на 20 пунктов выше цены открытия рынка (дневной свечи) и Sell Stop на 20 пунктов ниже открытия. При тестировании постоянно выдает ошибку "OrderSend Error 130".

Мудрецы! Помогите подкрутить.

Файлы:
 
den77784:

Приветствую всех, кто владеет MQL. Не знаю к кому обратится, но надеюсь что Вы поможете.

Пытался написать эксперта который в период с 00:00 по 00:15 (по времени брокера) мог бы выставить отложники. Buy stop на 20 пунктов выше цены открытия рынка (дневной свечи) и Sell Stop на 20 пунктов ниже открытия. При тестировании постоянно выдает ошибку "OrderSend Error 130".

Мудрецы! Помогите подкрутить.

OrderSend(Symbol(),OP_BUYLIMIT,Lots,ds+20,3,ds-StopLoss,ds+TakeProfit,"",Magic_Number);
А вам не кажется, что к цене открытия дневной свечи вы слишком много добавляете (+20). Правильно будет 20*Point, StopLoss*Point, и TakeProfit*Point. И нужно также нормализовать все цены.
 
khorosh:
А вам не кажется, что к цене открытия дневной свечи вы слишком много добавляете (+20). Правильно будет 20*Point, StopLoss*Point, и TakeProfit*Point. И нужно также нормализовать все цены.



Я несилен в терминологии MQL и этим языком занимаюсь меньше месяца. Желательно программно показать как использовать OrderSend, потому что я поставил

OrderSend(Symbol(),OP_BUYLIMIT,Lots,ds+20*Point,3,ds-StopLoss*Point,ds+TakeProfit*Point,"",Magic_Number);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,ds-20*Point,3,ds+StopLoss*Point,ds-TakeProfit*Point,"",Magic_Number);

И в итоге всёравно вся та же ошибка. Число 20 - обязательный параметр. Вся история GBPUSD и EURJPY тому подтверждение.

 

Пример из хелпа, попробуйте все параметры заполнить до конца, если не поможет, то анализируйте MARKETINFO, на сколько близко разрешает ваш ДЦ ставить лимитники.

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point,"My order #"+counter,16384,0,Green);
     if(ticket<0)
       {
        Print("OrderSend failed with error #",GetLastError());
        return(0);
       }
    }
 
den77784:



Я несилен в терминологии MQL и этим языком занимаюсь меньше месяца. Желательно программно показать как использовать OrderSend, потому что я поставил

OrderSend(Symbol(),OP_BUYLIMIT,Lots,ds+20*Point,3,ds-StopLoss*Point,ds+TakeProfit*Point,"",Magic_Number);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,ds-20*Point,3,ds+StopLoss*Point,ds-TakeProfit*Point,"",Magic_Number);

И в итоге всёравно вся та же ошибка. Число 20 - обязательный параметр. Вся история GBPUSD и EURJPY тому подтверждение.

Стопы и тейки надо отсчитывать относительно цены установки ордера. Например: (ds+20*Point) -StopLoss *Point
 

Мда... У меня тут какая-то нереальная жесть с ценами получается))) Мало того, надо еще функцию поставить которая перепроверяла бы были поставлены ордера или нет)))


 
Вы реально думаете что курс для евроены когда-нибудь станет 0,8064 ??? думаю не в этом веке....
 

Посмотрите свое ДЦ возможно там пятизнак, тогда надо ставить 200п

 
den77784:

Мда... У меня тут какая-то нереальная жесть с ценами получается))) Мало того, надо еще функцию поставить которая перепроверяла бы были поставлены ордера или нет)))



Мудрецы нервно курят в сторонке... :-)

Не нормализованы под Ваш ДЦ цены перед установкой ордера посредством использования ф-ии:

пример

 PRICE_AO = NormalizeDouble((iHigh(Symbol(),15,1) + 10*Point), Digits );// Цена установки отложеного ордера