И что дальше?
Ну, в том смысле что конструкция типа
{
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);//устанавливаем отложенный ордер селстоп
}
не выполняется в один проход. Сначала выставляется только первый.
А по логике робота он удаляется на новом проходе.
В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп. На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.
Не знаю как обойти эту заморочку.
По логике я использую отсутствие отложенного ордера как факт того, что он перешел в разряд активированного.
Может есть другой способ отслеживания события срабатывания отложенного ордера?
По логике я использую отсутствие отложенного ордера как факт того, что он перешел в разряд активированного.
Может есть другой способ отслеживания события срабатывания отложенного ордера?
Можно проверить, существует ли рыночный ордер. Если рыночного нет, значит начальная стадия. Если есть рыночный, тогда удаляем.
Рыночных нет только в самом начале работы робота и после того как рыночных ордеров накопится 80 штук встречных и они будут взаимно закрыты.
Число рыночных постоянно повышается, при этом отложенных всегда должно быть по одному в разных направлениях, только с разным размером лота.
Ну, в том смысле что конструкция типа
{
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);//устанавливаем отложенный ордер селстоп
}
не выполняется в один проход. Сначала выставляется только первый.
А по логике робота он удаляется на новом проходе.
В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп. На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.
Не знаю как обойти эту заморочку.
Ну, в том смысле что конструкция типа
{
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);//устанавливаем отложенный ордер селстоп
}
не выполняется в один проход. Сначала выставляется только первый.
А по логике робота он удаляется на новом проходе.
В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп. На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.
Не знаю как обойти эту заморочку.
Рыночных нет только в самом начале работы робота и после того как рыночных ордеров накопится 80 штук встречных и они будут взаимно закрыты.
Число рыночных постоянно повышается, при этом отложенных всегда должно быть по одному в разных направлениях, только с разным размером лота.
Значит надо как-то метить парочку. Через комментарий или глобальными переменными.
Еще можно по времени открытия. Если есть рыночный со времени открытия больше времени открытия отложенного, значит он из пары и оставшийся отложенный надо удалять.
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);//устанавливаем отложенный ордер селстоп } // Так у меня работает
Ну, в том смысле что конструкция типа
{
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);//устанавливаем отложенный ордер селстоп
}
не выполняется в один проход. Сначала выставляется только первый.
А по логике робота он удаляется на новом проходе.
В итоге у меня выставляется например селстоп, затем он удаляется и выставляется бай стоп. На новом баре этот байстоп удаляется и выставляется селстоп. И процесс повторяется с каждым новым баром, а мне надо выставить оба, тогда удалений одного из них не будет.
Не знаю как обойти эту заморочку.
Правильно и поочередно, выстроить логику. Только так, можно обойти эту заморочку.
Самое смешное, проблема у вас, видимо заключается в критерии удалении отложек, а вы опубликовали код открытия пары ордеров
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сделал робота, в котором есть необходимость выставлять "одновременно" два отложенных встречных ордера.