Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да какая разница, если это простая последовательность PositionSelectByTicket и PositionGetDouble? Функция на стандартных API. Что в ней такого особенного? Называю так, чтобы каждый раз не писать PositionSelectByTicket и PositionGetDouble.
В моей функции не используется DEAL_POSITION_ID. Информацию о сделках в MQL5 можно получить только из истории, если не ошибаюсь. Поэтому, если я получил trade_result.deal из OrderSend, то за информацией по trade_result.deal я должен обращаться к истории сделок, если я правильно понимаю?
Разница в том, что в PositionSelectByTicket надо ставить тикет позиции, а не сделки. Тикет позиции почти всегда совпадает с тикетом ордера, но крайне редко, или никогда, не совпадает с тикетом сделки. Поэтому получив тикет сделки, надо получить по нему DEAL_POSITION_ID и только по тикету позиции выбрать позицию для дальнейшей работы с ней.
Или после открытия позиции обратиться к Request, получить структуру MqlTradeRequest в которой присутствует тикет позиции
position
Тикет позиции. Следует заполнять при изменении и закрытии позиции для ее однозначной идентификации. Как правило, соответствует тикету ордера, в результате которого позиция была открыта.
Разница в том, что в PositionSelectByTicket надо ставить тикет позиции, а не сделки. Тикет позиции почти всегда совпадает с тикетом ордера, но крайне редко, или никогда, не совпадает с тикетом сделки. Поэтому получив тикет сделки, надо получить по нему DEAL_POSITION_ID и только по тикету позиции выбрать позицию для дальнейшей работы с ней.
Или после открытия позиции обратиться к Request, получить структуру MqlTradeRequest в которой присутствует тикет позиции
position
Тикет позиции. Следует заполнять при изменении и закрытии позиции для ее однозначной идентификации. Как правило, соответствует тикету ордера, в результате которого позиция была открыта.
MqlTradeRequest, это входные параметры (данные), MqlTradeResult, это выходные данные, функции OrderSend. Request, это запрос, если перевести с английского. Как же OrderSend может вернуть значение в запрос или во входные данные (Request)?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
PositionSelect код ошибка 4753
Mihail Matkovskij, 2019.07.09 11:22
У меня бывает абсолютно аналогично. К примеру функция которой эксперт открывает позицию: OrderSend, возвращает trade_result.deal: 406. Казалось бы, функция OrderSend вернула правильный тикет. Но следующая функция:
которая вызывается сразу после открытия позиции возвращает 0 с ошибкой 4753, как это не странно. В тоже время на графике вместо позиции #406, которая должна быть по идее, красуется позиция #413. Как и где тикет позиции успел поменяться между вызовами OrderSend и моей функции getPositionProfit (а фактически PositionSelectByTicket и PositionGetDouble), что я не понял как это произошло?
Тикет long-типа. Судя по низким значениям , запускаете в Тестере. Следующий совет неправильный, но сможет улучшить ситуацию: вместо trade_result.deal использовать trade_result.order.
MqlTradeRequest, это входные параметры (данные), MqlTradeResult, это выходные данные, функции OrderSend. Request, это запрос, если перевести с английского. Как же OrderSend может вернуть параметры в запрос или во входные данные (Request)?
Проверьте.
В стандартной библиотеке есть
Если совпадает всё, то строка 45.
После открытия позиции запрашиваем .Request() и оттуда читаем тикет позиции.
Тикет long-типа. Судя по низким значениям , запускаете в Тестере. Следующий совет не правильный, но сможет улучшить ситуацию, если вместо trade_result.deal будете использовать trade_result.order.
Обратите особое внимание на выделенное
position
Тикет позиции. Следует заполнять при изменении и закрытии позиции для ее однозначной идентификации. Как правило, соответствует тикету ордера, в результате которого позиция была открыта.
только-лишь "КАК ПРАВИЛО"... Но может и не совпасть. Я на это нарывался даже в тестере.
только-лишь "КАК ПРАВИЛО"... Но может и не совпасть. Я на это нарывался даже в тестере.
Прочтите внимательнее мой пост.
Прочтите внимательнее мой пост.
Вот именно "сможет улучшить", но не сделать правильно. И не смотря на то, что я цитировал вас, посыл был Михаилу.
Вот именно "сможет улучшить", но не сделать правильно. И не смотря на то, что я цитировал вас, посыл был Михаилу.
Посмотрел свою библиотеку. Вывод такой, на хедже при открытии позиции ее тикет всегда равен тикету ордера. Поэтому Result.order будет надежно пахать в таких ситуациях.
Посмотрел свою библиотеку. Вывод такой, на хедже при открытии позиции ее тикет всегда равен тикету ордера. Поэтому Result.order будет надежно пахать в таких ситуациях.
Ну, о вкусах фломастеров спорить бесполезно. Видимо вам придётся менять своё мнение только тогда, когда вы сами нарвётесь на несовпадение. А произойти это может не скоро. За всё время я нарвался только один раз.
Ну, о вкусах фломастеров спорить бесполезно. Видимо вам придётся менять своё мнение только тогда, когда вы сами нарвётесь на несовпадение. А произойти это может не скоро. За всё время я нарвался только один раз.
Таких ситуаций не бывает. Скорее всего, неправильно интерпретировали.