Скачать MetaTrader 5

"Одновременное " выставление двух ордеров в МТ4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Pavel Ipatov
279
Pavel Ipatov  

Сделал робота, в котором есть необходимость выставлять "одновременно" два отложенных встречных ордера.

Yury Kirillov
3375
Yury Kirillov  
И что дальше?
Pavel Ipatov
279
Pavel Ipatov  
Yury Kirillov:
И что дальше?

Ну, в том смысле что конструкция типа

{

 TICV=OrderSend(Symbol(),4,Lots,Ask+(Raz1/6)*Point,0,Bid-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер байстоп
 TICN=OrderSend(Symbol(),5,Lots,Bid-(Raz1/6)*Point,0,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер селстоп


   }

не выполняется в один проход. Сначала выставляется только первый.

А по логике робота он  удаляется на новом проходе.

В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп.  На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.

Не знаю как обойти эту заморочку.

Pavel Ipatov
279
Pavel Ipatov  

По логике я использую отсутствие отложенного ордера как факт того, что он перешел в разряд активированного.

Может есть другой способ отслеживания события срабатывания отложенного ордера?

Dmitry Fedoseev
43504
Dmitry Fedoseev  
Pavel Ipatov:

По логике я использую отсутствие отложенного ордера как факт того, что он перешел в разряд активированного.

Может есть другой способ отслеживания события срабатывания отложенного ордера?

Можно проверить, существует ли рыночный ордер. Если рыночного нет, значит начальная стадия. Если есть рыночный, тогда удаляем.
Pavel Ipatov
279
Pavel Ipatov  
Dmitry Fedoseev:
Можно проверить, существует ли рыночный ордер. Если рыночного нет, значит начальная стадия. Если есть рыночный, тогда удаляем.

Рыночных нет только в самом начале работы робота и после того как рыночных ордеров накопится 80 штук встречных и они будут взаимно закрыты.

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

Alexey Volchanskiy
17144
Alexey Volchanskiy  
Pavel Ipatov:

Ну, в том смысле что конструкция типа

{

 TICV=OrderSend(Symbol(),4,Lots,Ask+(Raz1/6)*Point,0,Bid-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер байстоп
 TICN=OrderSend(Symbol(),5,Lots,Bid-(Raz1/6)*Point,0,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер селстоп


   }

не выполняется в один проход. Сначала выставляется только первый.

А по логике робота он  удаляется на новом проходе.

В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп.  На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.

Не знаю как обойти эту заморочку.

Может сделать задержку 50 мс? Некоторые ДЦ шалят даже с мгновенной установкой ТП и СЛ после установки рыночного, сам сталкивался.
Artem Gulturyan
280
Artem Gulturyan  
Pavel Ipatov:

Ну, в том смысле что конструкция типа

{

 TICV=OrderSend(Symbol(),4,Lots,Ask+(Raz1/6)*Point,0,Bid-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер байстоп
 TICN=OrderSend(Symbol(),5,Lots,Bid-(Raz1/6)*Point,0,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер селстоп


   }

не выполняется в один проход. Сначала выставляется только первый.

А по логике робота он  удаляется на новом проходе.

В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп.  На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.

Не знаю как обойти эту заморочку.



В любом случае, при торговле на реале следует выполнить проверку: установлен ли первый ордер ??нет, значит нужно повторить это децствие ))
Первый выставлен, ок выставляем второй. И тоже выполнить проерку

Тем более, что ваш случай никак не сможет вам сказать почем3 он не выставил отложку. Запросите код ошибки после первой строки:

if ( TICV <= 0 ) { Print ( " скрытая ошибка ::: #### ", GetLastError () );}
Dmitry Fedoseev
43504
Dmitry Fedoseev  
Pavel Ipatov:

Рыночных нет только в самом начале работы робота и после того как рыночных ордеров накопится 80 штук встречных и они будут взаимно закрыты.

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

Значит надо как-то метить парочку. Через комментарий или глобальными переменными.

Еще можно по времени открытия. Если есть рыночный со времени открытия больше времени открытия отложенного, значит он из пары и оставшийся отложенный надо удалять.

Vladimir Zubov
4440
Vladimir Zubov  
Sleep (100);
RefreshRates(); 

Попробуйте между установкой ордеров добавить это.

{

TICV=OrderSend(Symbol(),4,Lots,Ask+(Raz1/6)*Point,0,Bid-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер байстоп
Sleep (100);
RefreshRates();  
TICN=OrderSend(Symbol(),5,Lots,Bid-(Raz1/6)*Point,0,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер селстоп

} // Так у меня работает
Alexey Busygin
6449
Alexey Busygin  
Pavel Ipatov:

Ну, в том смысле что конструкция типа

{

 TICV=OrderSend(Symbol(),4,Lots,Ask+(Raz1/6)*Point,0,Bid-SL*Point,Ask+TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер байстоп
 TICN=OrderSend(Symbol(),5,Lots,Bid-(Raz1/6)*Point,0,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);//устанавливаем отложенный ордер селстоп


   }

не выполняется в один проход. Сначала выставляется только первый.

А по логике робота он  удаляется на новом проходе.

В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп.  На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.

Не знаю как обойти эту заморочку.

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

Самое смешное, проблема у вас, видимо заключается в критерии удалении отложек, а вы опубликовали код открытия пары ордеров

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий