Полный код, если нужно: https://drive.google.com/file/d/0B6j5Emo524FIdnA3RzRHUWZwOU0/edit?usp=sharing
У меня бывает абсолютно аналогично. К примеру функция которой эксперт открывает позицию: OrderSend, возвращает trade_result.deal: 406. Казалось бы, функция OrderSend вернула правильный тикет. Но следующая функция:
double getPositionProfit(int _position){ ResetLastError(); if(PositionSelectByTicket(_position)) return PositionGetDouble(POSITION_PROFIT); else{ Print("getPositionProfit Error coge: #", GetLastError()); return 0; } }
которая вызывается сразу после открытия позиции возвращает 0 с ошибкой 4753, как это не странно. В тоже время на графике вместо позиции #406, которая должна быть по идее, красуется позиция #413. Как и где тикет позиции успел поменяться между вызовами OrderSend и моей функции getPositionProfit (а фактически PositionSelectByTicket и PositionGetDouble), что я не понял как это произошло?
У меня бывает абсолютно аналогично. К примеру функция которой эксперт открывает позицию: OrderSend, возвращает trade_result.deal: 406. Казалось бы, функция OrderSend вернула правильный тикет. Но следующая функция:
которая вызывается сразу после открытия позиции возвращает 0 с ошибкой 4753, как это не странно. В тоже время на графике вместо позиции #406, которая должна быть по идее, красуется позиция #413. Как и где тикет позиции успел поменяться между вызовами OrderSend и моей функции getPositionProfit (а фактически PositionSelectByTicket и PositionGetDouble), что я не понял как это произошло?
Это не позиция, это сделка.
Это не позиция, это сделка.
Значит, в MQL5 идентификатор "сделки" и идентификатор "позиции" совпадают, так как моя функция getPositionProfit работает в подавляющем большинстве случаев. Почему же тогда она перестает работать в определенные моменты?
Значит, в MQL5 идентификатор "сделки" и идентификатор "позиции" совпадают, так как моя функция getPositionProfit работает в подавляющем большинстве случаев. Почему же тогда она перестает работать в определенные моменты?
Очень подозреваю, что "моя функция" далеко не ваша. Но в ней используется DEAL_POSITION_ID из свойств сделки

- www.mql5.com
Очень подозреваю, что "моя функция" далеко не ваша.
Да какая разница, если это простая последовательность PositionSelectByTicket и PositionGetDouble? Функция на стандартных API. Что в ней такого особенного? Называю так, чтобы каждый раз не писать PositionSelectByTicket и PositionGetDouble.
В моей функции не используется DEAL_POSITION_ID. Информацию о сделках в MQL5 можно получить только из истории, если не ошибаюсь. Поэтому, если я получил trade_result.deal из OrderSend, то за информацией по trade_result.deal я должен обращаться к истории сделок, если я правильно понимаю?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Позиции всегда открыты но в один прекрасный момент PositionSelect почему то возвращает ошибку 4753 (Позиция не найдена):
Почему появляется эта ошибка если позиция открыта?