Открываю сделку в цикле следующим кодом:
Цикл задуман как средство повышения надежности открытия сделки, то есть, если не открывается с первого раза, пробовать снова.
Проблема в том, что, пока терминал получает ответ сервера, цикл успевает послать команду OrderSend() несколько раз.
Как можно заставить его ждать ответа?
Попробуйте между посылкой запросов сделать паузу. Используйте функцию PauseBeforeTrade
Попробуйте между посылкой запросов сделать паузу. Используйте функцию PauseBeforeTrade
Иногда сервер не отвечает вообще... это надо предусмотреть в коде - как то раз чуть не слил депо из-за этого безобразия.
А почему-бы не следить за транзакциями? Событие OnTradeTransaction() прошло, анализируйте что случилось.
Не просто OnTradeTransaction(), а именно тип транзакции TRADE_TRANSACTION_DEAL_ADD - событие добавления сделки в историю.
Разве событие OnTradeTransaction() произойдет, при неудачном OrderSend()?
Нет, OnTradeTransaction будет только при успешном выполнении:
В результате выполнения определенных действий с торговым счетом, его состояние изменяется. К таким действиям относятся:
·Отсылка торгового запроса любым MQL5-приложением в клиентском терминале при помощи функций OrderSend и OrderSendAsync и его последующее исполнение;
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Открываю сделку в цикле следующим кодом:
Цикл задуман как средство повышения надежности открытия сделки, то есть, если не открывается с первого раза, пробовать снова.
Проблема в том, что, пока терминал получает ответ сервера, цикл успевает послать команду OrderSend() несколько раз.
Как можно заставить его ждать ответа?