Основная проблема в mql5 (счет хеджирования) заключается в том, чтобы узнать цену Stop Loss, когда позиция закрывается, из-за отсутствия истории позиций. Вы можете использовать HistorySelectByPosition(), чтобы найти ваш первоначальный Stop Loss (Stop Loss первоначального ордера), но если вы изменили этот Stop Loss позже, он генерирует новые ордера для этого, без того же POSITION_ID, и поэтому они не будут выбраны функцией HistorySelectByPosition(), поэтому становится очень трудно узнать последний Stop Loss, который вы разместили.
Я не знаю, можно ли считать это ошибкой, но если нет, то следовало бы.
Основная проблема в mql5 (счет хеджирования) - узнать цену Stop Loss, когда позиция закрывается, из-за отсутствия истории позиций. Вы можете использовать HistorySelectByPosition(), чтобы найти ваш начальный Stop Loss (Stop Loss начального ордера)...
Вы можете использовать HistorySelectByPosition(), с вашим POSITION_ID, а затем вы можете найти первый ордер с этим POSITION_ID, и проверить Stop Loss этого ордера (HistoryOrderGetDouble(ticket, ORDER_SL)). Это сработало для меня, но .проблема возникает, когда вы изменяете этот Stop Loss позже.
Jose Francisco Casado Fernandez: Вы можете использовать HistorySelectByPosition(), с вашим POSITION_ID, а затем вы можете найти первый ордер с этим POSITION_ID, и проверить Stop Loss этого ордера (HistoryOrderGetDouble(ticket, ORDER_SL)). Это сработало для меня, но .проблема возникает, когда вы изменяете этот Stop Loss позже.
Jose Francisco Casado Fernandez: Вы можете использовать HistorySelectByPosition(), с вашим POSITION_ID, а затем вы можете найти первый ордер с этим POSITION_ID, и проверить Stop Loss этого ордера (HistoryOrderGetDouble(ticket, ORDER_SL)). Это сработало для меня, но проблема возникает, когда вы позже изменяете этот Stop Loss.
И затем,проверьтеORDER_POSITION_IDравнымDEAL_POSITION_ID, затем проверьтеDEAL_ENTRY,еслиOUT,получитеHystoryDealGetDouble(ticket,DEAL_PRICE).
Хорошо, а знаете ли вы, почему если вы позже измените стоп-лосс, то новый ордер, сгенерированный для этого, не показывает тот же POSITION_ID? Это было бы идеальным решением для этого вопроса. Это ошибка? Спасибо.
Roberto Jacobs: И затем,проверьтеORDER_POSITION_IDравныйDEAL_POSITION_ID, затем проверьтеDEAL_ENTRY,еслиOUT,получитеHystoryDealGetDouble(ticket,DEAL_PRICE).
Да, это то, о чем я говорил. Я сделал так, и это сработало, но если вы изменяете начальный Stop Loss, он генерирует новый ордер БЕЗ того же POSITION_ID. Я не знаю почему. Я думаю, это ошибка. С уважением,.
Не нужно смотретьпроскальзывание,потому что ордербылзакрыт,ицена закрытиянаходится наHystoryDealGetDouble(ticket,DEAL_PRICE). Еслиордер не былвзакрытии,ивыделаете ордерназакрытие,то нужно учитывать, сколькопроскальзывать,чтобы не былоошибкиреквот.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Не могли бы вы ответить, если вы знаете, о чем говорите?
Это тема о 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).
Если ордер не был в закрытии, и вы делаете ордер на закрытие, то нужно учитывать , сколько проскальзывать, чтобы не было ошибки реквот.