- Ошибки модификации ордеров
- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
- Как лучше всего работать с модифицированными ордерами?
Товарищи подскажите. Есть советник. Каждый час делает выборку ордера и его модификацию по tick=trade.PositionModify(tick,stop,pos_tp);. При переходе через 0:00 делает попытку, получает marlet close и в итоге получается модифицировать только на следующем часе в 1:00. Есть ли простое решение без повторной выборки и выявления имеющегося стопа после попытки модифицировать?
тикет позиции запоминать.
или просто трижды написать одно и тоже:
tick=trade.PositionModify(tick,stop,pos_tp);
tick=trade.PositionModify(tick,stop,pos_tp);
tick=trade.PositionModify(tick,stop,pos_tp);
первая модификация застрянет на market close,
вторая сработает при открытии торгов,
а третья будет будет отброшена т.к. нечего менять?
или просто трижды написать одно и тоже:
tick=trade.PositionModify(tick,stop,pos_tp);
tick=trade.PositionModify(tick,stop,pos_tp);
tick=trade.PositionModify(tick,stop,pos_tp);
первая модификация застрянет на market close,
вторая сработает при открытии торгов,
а третья будет будет отброшена т.к. нечего менять?
Нет. void OnTick() закончит работу и будет ждать следующий тик. Если конечно void OnTick(). Если таймер, то по времени. Закрытие рынка не остановит работу советника, если он начал работу на предыдущем тике, то сверху вниз он закончит работу программы.
Нет. void OnTick() закончит работу и будет ждать следующий тик. Если конечно void OnTick(). Если таймер, то по времени. Закрытие рынка не остановит работу советника, если он начал работу на предыдущем тике, то сверху вниз он закончит работу программы.
Спасибо. Да, void OnTick(). Но модификация происходит в отдельной функции которая вызывается при нескольких условиях и в частности по времени в 00 минут. Т.е. при выполнении условий вызов функции в которой выполняется модификация и получается выход из функции при невыполнении модификации при закрытом маркете.
Спасибо. Да, void OnTick(). Но модификация происходит в отдельной функции которая вызывается при нескольких условиях и в частности по времени в 00 минут. Т.е. при выполнении условий вызов функции в которой выполняется модификация и получается выход из функции при невыполнении модификации при закрытом маркете.
Например можно так:
for (uint i=1;i<=try;i++) { if (OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,clrNONE)) { break; }else { Print(Error Modify order #",OrderTicket()," code " ,GetLastError()); Sleep(100); } }
В цикле попытка модификации ордера. Если попытка удачная цикл прерывается. Переменная try количество попыток. Можно еще добавить анализ самой ошибки мешающей модифицировать ордер. GetLastError() - код ошибки расшифровку, которой можно в справочнике найти.
Например можно так:
В цикле попытка модификации ордера. Если попытка удачная цикл прерывается. Переменная try количество попыток. Можно еще добавить анализ самой ошибки мешающей модифицировать ордер. GetLastError() - код ошибки расшифровку, которой можно в справочнике найти.
Спасибо большое. Отличная идея.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования