Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не могли бы вы ответить, если вы знаете, о чем говорите?
Это тема о MT5/mql5, я буду удалять все не относящиеся к теме сообщения.
На MT5 нет цены стоплосса в истории.
Основная проблема в mql5 (счет хеджирования) заключается в том, чтобы узнать цену Stop Loss, когда позиция закрывается, из-за отсутствия истории позиций. Вы можете использовать HistorySelectByPosition(), чтобы найти ваш первоначальный Stop Loss (Stop Loss первоначального ордера), но если вы изменили этот Stop Loss позже, он генерирует новые ордера для этого, без того же POSITION_ID, и поэтому они не будут выбраны функцией HistorySelectByPosition(), поэтому становится очень трудно узнать последний Stop Loss, который вы разместили.
Я не знаю, можно ли считать это ошибкой, но если нет, то следовало бы.
С уважением.
Основная проблема в mql5 (счет хеджирования) - узнать цену Stop Loss, когда позиция закрывается, из-за отсутствия истории позиций. Вы можете использовать HistorySelectByPosition(), чтобы найти ваш начальный Stop Loss (Stop Loss начального ордера)...
Нет, не можете, или я вас неправильно понял.
Текущий Stoploss нигде не находится в истории.
Нет, не можете, или я вас неправильно понял.
Стоплосс нигде в истории не фигурирует.
.проблема возникает, когда вы изменяете этот Stop Loss позже.
Вы можете использовать HistorySelectByPosition(), с вашим POSITION_ID, а затем вы можете найти первый ордер с этим POSITION_ID, и проверить Stop Loss этого ордера (HistoryOrderGetDouble(ticket, ORDER_SL)). Это сработало для меня, но
.проблема возникает, когда вы изменяете этот Stop Loss позже.
Теперь вы поняли, вы правы.
Вы можете использовать HistorySelectByPosition(), с вашим POSITION_ID, а затем вы можете найти первый ордер с этим POSITION_ID, и проверить Stop Loss этого ордера (HistoryOrderGetDouble(ticket, ORDER_SL)). Это сработало для меня, но
проблема возникает, когда вы позже изменяете этот Stop Loss.
затем проверьте DEAL_ENTRY, если OUT, получите HystoryDealGetDouble(ticket,DEAL_PRICE).
Если DEAL_PRICE равна HistoryOrderGetDouble(ticket,ORDER_SL), то это означает, что ордер был закрыт по стоп-лоссу.
Вот мое мнение.
Теперь вы поняли, вы правы.
Если DEAL_PRICE равна HistoryOrderGetDouble(ticket,ORDER_SL), то это означает, что ордер был закрыт по стоп-лоссу.
И затем, проверьте ORDER_POSITION_ID равный DEAL_POSITION_ID,
затем проверьте DEAL_ENTRY, если OUT, получите HystoryDealGetDouble(ticket,DEAL_PRICE).
Если DEAL_PRICE равна HistoryOrderGetDouble(ticket,ORDER_SL), то это означает, что ордер был закрыт по стоп-лоссу.
Вот мое мнение.
Как насчет проскальзывания?
Не нужно смотреть проскальзывание, потому что ордер был закрыт, и цена закрытия находится на HystoryDealGetDouble(ticket, DEAL_PRICE).
Если ордер не был в закрытии, и вы делаете ордер на закрытие, то нужно учитывать , сколько проскальзывать, чтобы не было ошибки реквот.