Подходит ли эта функция для проверки закрыт ли ордер?
Это не самый лучший вариант. Даже самый плохой вариант. Изучите работу
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)
там можете получить не только факт закрытия позиции, но и причину. По стопу, по тейку или советником, или руками… И много чего ещё полезного…
Это не самый лучший вариант. Даже самый плохой вариант. Изучите работу
там можете получить не только факт закрытия позиции, но и причину. По стопу, по тейку или советником, или руками… И много чего ещё полезного…
if(trans.type==TRADE_TRANSACTION_ORDER_DELETE)
Пойдёт?
Нет. TRADE_TRANSACTION_ORDER_DELETE срабатывает во многих случаях.
Пример реакции на SL/TP:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Edgar Akhmadeev, 2024.11.12 23:02
Я Вам советовал поработать с отладчиком внутри OnTradeTransaction. Узнали бы наглядно последовательность процессов.
if (trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.order_state == ORDER_STATE_STARTED) { HistoryDealSelect(trans.deal); ENUM_DEAL_ENTRY entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(trans.deal, DEAL_ENTRY); ENUM_DEAL_REASON reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(trans.deal, DEAL_REASON); if (entry == DEAL_ENTRY_OUT && (reason == DEAL_REASON_SL || reason == DEAL_REASON_TP)) { // Closed on SL/TP } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования