Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Устанавливай программы из библиотеки прямо в MetaTrader. Это просто!
Денис
14
Денис 2012.09.02 14:55 

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

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

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

Файлы:
khorosh
8042
khorosh 2012.09.02 15:48  
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. И нужно также нормализовать все цены.
Денис
14
Денис 2012.09.02 16:34  
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 тому подтверждение.

ZZZEROXXX
768
ZZZEROXXX 2012.09.02 16:42  

Пример из хелпа, попробуйте все параметры заполнить до конца, если не поможет, то анализируйте 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);
       }
    }
khorosh
8042
khorosh 2012.09.02 18:49  
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
Денис
14
Денис 2012.09.02 19:16  

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


Europa
984
Europa 2012.09.03 13:36  
Вы реально думаете что курс для евроены когда-нибудь станет 0,8064 ??? думаю не в этом веке....
Morexod
60
Morexod 2012.09.03 15:39  

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

Роман
7939
Роман 2012.09.03 16:03  
den77784:

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



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

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

пример

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