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