- www.mql5.com
- Гибкая торговая система MetaTrader 5 со всеми видами ордеров
- Моментальные уведомления (алерты, Alert) в MetaTrader 5
- Скачайте мобильное приложение MetaTrader 5 для Android
Что ни кто не знает?
Такая ситуация, выставлю ордер на покупку (SL и TP есть), даю ордеру magic = 777. Но в итоги ( когда срабатывает TP) magic сделки равен 0. Как же мне сделать так что бы magic ордера был равен magic сделки.
Что ни кто не знает?
я только что проверил. у меня все работает.
у сделки стоит магик её ордера.
значит у вас ошибка в коде. воспользуйтесь дебагом
Что ни кто не знает?
Отчего же, знаем!
Позиция имеет магик последнего ордера который работал с ней.
Например, если вы открыли позицию с магиком =777 то позиция имеет этот магик.
Если вы самостоятельно закрыли позицию, то сделка должна иметь магик ордера который закрыл позицию.
А если позиция закрылась по SL, TP, то магик сделки должен быть =0, потому что позиция закрылась по ордеру, который выставил торговый сервер с магиком=0.
Так вот протестировав, я обнаружил, что в стандартном классе CTarde есть баг: при закрытии позиции не указывается магик.
bool CTrade::PositionClose(const string symbol,const ulong deviation) { ... //--- setting request m_request.action =TRADE_ACTION_DEAL; m_request.symbol =symbol; m_request.deviation =(deviation==ULONG_MAX) ? m_deviation : deviation; m_request.type_filling=m_type_filling; m_request.volume =PositionGetDouble(POSITION_VOLUME);}m_request.magic =m_magic;
Если добавить строку выделенную красным, то магик сделки будет правильным.
А если позиция закрылась по SL, TP, то магик сделки должен быть =0, потому что позиция закрылась по ордеру, который выставил торговый сервер с магиком=0.
Так и происходит. Выставляю ордер по рынку с magic = 777 ( TP=10 pips, SL= 20pips). Срабатывает TP, в итоги magic у сделки 0, вместо предполагаемых 777 . И мой робот не может отследить как закрылась сделка. Как сделать так что бы TP И SL выставлялись по этому же magic (777)?
Так и происходит. Выставляю ордер по рынку с magic = 777 ( TP=10 pips, SL= 20pips). Срабатывает TP, в итоги magic у сделки 0, вместо предполагаемых 777 . И мой робот не может отследить как закрылась сделка. Как сделать так что бы TP И SL выставлялись по этому же magic (777)?
Если позиция закрылась по SL или TP то магик у сделки равен нулю. Так и должно быть.
Сделку можно отследить анализируя историю ордеров которые принадлежат вашей позиции(сделке). У них и магики сохраняются.
Но Вам магик не нужен. Важно сравнить цену закрытия и уровни стоплосса и тейк профита. Если один из них совпадает с ценой закрытия, значит сработал SL/TP.
Проще всего по комменту сделки отслеживать срабатывание стопов. Искать '[tp' или '[sl' .
Если позиция закрылась по SL или TP то магик у сделки равен нулю. Так и должно быть.
Сделку можно отследить анализируя историю ордеров которые принадлежат вашей позиции(сделке). У них и магики сохраняются.
Но Вам магик не нужен. Важно сравнить цену закрытия и уровни стоплосса и тейк профита. Если один из них совпадает с ценой закрытия, значит сработал SL/TP.
было бы логичнее, если бы сервер проставлял на сделку закрытия тот же магик, который был при установке уровней SL/TP.
Полностью поддерживаю!
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования