Возможно, у меня была похожая проблема. В том случае, если сделка была открыта советником, а закрыта руками, то сделка с признаком DEAL_ENTRY_OUT не будет содержать magic, что логично. Думаю, та же ситуация будет и в случаях, когда сделки будут закрыты биржей (например, стопаут).
Я проблему решил так: сначала нахожу все сделки с признаками закрытия (DEAL_ENTRY_INOUT, DEAL_ENTRY_OUT, DEAL_ENTRY_OUT_BY) - для них определяю DEAL_POSITION_ID, а второй итерацией для всех этих позиций нахожу открывающие сделки и проверяю, какой у них magic. Вроде все работает корректно, но конечно гораздо медленнее. Тут уже что важнее для тебя, точный подсчет или скорость работы.
В общем сегодня обнаружил, что перебор сделок в истории с фильтром по магическому номеру совсем необязательно покажет все закрытые позиции с этим магиком. Ну то есть иногда получается, что позиция открывалась с магическим номером, а в сделках в истории она уже без магического номера. Какие-то с номерами, какие-то без.
Аналогично и с комментариями. Дополнительная сложность - CloseBy. Поэтому, как правило, пишутся торговые библиотеки, в которых учитываются и все подобные нюансы.
Возможно, у меня была похожая проблема. В том случае, если сделка была открыта советником, а закрыта руками, то сделка с признаком DEAL_ENTRY_OUT не будет содержать magic, что логично. Думаю, та же ситуация будет и в случаях, когда сделки будут закрыты биржей (например, стопаут).
Я проблему решил так: сначала нахожу все сделки с признаками закрытия (DEAL_ENTRY_INOUT, DEAL_ENTRY_OUT, DEAL_ENTRY_OUT_BY) - для них определяю DEAL_POSITION_ID, а второй итерацией для всех этих позиций нахожу открывающие сделки и проверяю, какой у них magic. Вроде все работает корректно, но конечно гораздо медленнее. Тут уже что важнее для тебя, точный подсчет или скорость работы.
Спасибо! Ситуация стала гораздо понятнее. Только не до конца понял, предложенное вами решение. Отобранные DEAL_POSITION_ID в массив складываете и потом... что?
Аналогично и с комментариями. Дополнительная сложность - CloseBy. Поэтому, как правило, пишутся торговые библиотеки, в которых учитываются и все подобные нюансы.
Код где-то можно посмотреть такой библиотеки? Меня интересует сам принцип отбора.
Неттинг?
Хеджинг
По ссылке ниже.
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 input long inMagic = 123; void OnStart() { for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderMagicNumber() == inMagic)) OrderPrint(); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Что интересно, если в терминале на вкладке история поставить отображение всех ордеров и сделок, то на тестовой сделке в графе ID эксперта ничего нет, а вот если поставить отображение только позиций, магик уже есть. Кто разбирается, подскажите, что тут за схема работает?