Отслеживание торгового запроса

SanF

Прохожий
Насколько я понял из документации, функция OrderSend() возвращает ответ, когда ордер только поставлен в очередь. В этот момент ещё не понятно, будет он исполнен или нет. MQLTradeResult может быть не заполнен. Получается, что программа продолжает работу, а позиция ещё не открыта. Ни result.retcode, ни количество позиций не дают информацию о результате. И возможна ситуация, когда советник решил, что позиция не открылась, и отправил ещё один ордер. А после этого первый ордер сработает.
Чтобы этого избежать, нужно отслеживать событие TradeTransaction. Но вроде бы, никто с этим не заморачивается. OrderSend() вернул true, значит ордер либо сработал, либо выдал ошибку в MQLTradeResult. По крайней мере, в советниках, которые я видел, обычно так.
Подскажите, насколько вообще возможна такая ситуация. Отслеживаете вы её или нет? Как обрабатываете результат запроса?
 

Moriarti

Активный участник
Я начал пользоваться MQL5 сильно позже, чем он появился (долго сидел исключительно на MQL4). А к тому времени, как начал его изучать, уже была готова стандартная библиотека Trade. И я стал пользоваться ей, не вдаваясь в подробности её реализации. К примеру, запрос на открытие длинной позиции всегда отправлял как-то так:

CTrade Trade;
Trade.Buy();

Обрабатывал только результат, который возвращает этот код (true/false).
Не знаю, правильный это подход или нет, но у меня пока не было проблем.
 

Who has watched this thread (Total: 2) Посмотреть

Верх