В торговом терминале МТ5 на вкладке История можно выбрать отображение разных данных (позиции, сделки, ордера, ордера и сделки). Меня интересуют данные по закрытым позициям. Вот как это отображается в терминале:
Пожалуйста, подскажите, как средствами MQL5 получить список закрытых позиций? Справку читал, но почему-то не смог там найти функции для получения списка закрытых позиций или хотя бы их количества (наподобие HistoryDealsTotal для сделок).
Конечной целью является получение финансового результата (прибыль или убыток) последней закрытой позиции, а также количество последних позиций, подряд закрытых с убытком.
В этой связи возникает дополнительный вопрос: после того, как я узнаю, как получить список закрытых позиций, есть ли гарантия, что последние закрытые позиции в этом списке находятся в самом конце (или в начале)? Иными словами, имеет ли этот список какую-то сортировку по умолчанию или нужно перебирать его весь в поисках последней закрытой позиции?
Позиция складывается из:
- Сделка на открытие позиции… (Цена сделки соответствует цене открытия позиции)
- Сделка на изменение позиции. Может быть несколько таких сделок
- Сделка на закрытие позиции… (Цена сделки соответствует цене закрытия позиции)
Существуют ещё сделки переворота позиции, но они вас пока не интересуют.
Так вот получив сделки вы можете получить все интересующие вас данные по закрытой позиции.
Комиссия позиции — сумма комиссий по всем сделкам участвующим в открытии, изменении и закрытии позиции.
Прибыль позиции — сумма прибыли сделок участвующих в изменении и закрытии позиции.
Позиция складывается из:
- Сделка на открытие позиции… (Цена сделки соответствует цене открытия позиции)
- Сделка на изменение позиции. Может быть несколько таких сделок
- Сделка на закрытие позиции… (Цена сделки соответствует цене закрытия позиции)
Существуют ещё сделки переворота позиции, но они вас пока не интересуют.
Так вот получив сделки вы можете получить все интересующие вас данные по закрытой позиции.
Комиссия позиции — сумма комиссий по всем сделкам участвующим в открытии, изменении и закрытии позиции.
Прибыль позиции — сумма прибыли сделок участвующих в изменении и закрытии позиции.
Иными словами, перебор всего списка сделок из истории — это единственный способ получить данные о финансовом результате закрытых позиций?
И именно так и задумывали разработчики?
Получается, что это не я не нашёл в документации функций для работы с закрытыми позициями? Их просто не существует?
Иными словами, перебор всего списка сделок из истории — это единственный способ получить данные о финансовом результате закрытых позиций?
И именно так и задумывали разработчики?
Получается, что это не я не нашёл в документации функций для работы с закрытыми позициями? Их просто не существует?
Лучше найдите определения, что такое ордер, что такое сделка и что такое позиция.
Сделка бывает исключительно в истории. А позиция только в «реальности», если можно так сказать.
Купил — сделка. Пока держишь — позиция. Продал — сделка. Больше нет позиции, остались только сделки.
Иными словами, перебор всего списка сделок из истории — это единственный способ получить данные о финансовом результате закрытых позиций?
И именно так и задумывали разработчики?
Получается, что это не я не нашёл в документации функций для работы с закрытыми позициями? Их просто не существует?
Из последней закрывающей сделки
Отличная рекомендация, спасибо!
Я правильно понимаю, что для того, чтобы работать со сделками из истории счёта, нужно сначала запросить их список при помощи функции HistorySelect, потом получить их количество функцией HistoryDealsTotal, а затем организовать перебор списка в цикле, как в примере к описанию функции HistoryDealGetTicket ?
Если так, то можно ли полагаться на то, что при запросе HistorySelect(0,TimeCurrent()) сделки в списке будут отсортированы от самой ранней до самой поздней?
Иначе говоря, если начать перебор полученного таким запросом списка сделок с конца [ HistoryDealGetTicket ( HistoryDealsTotal() - 1 ) ], можно ли быть уверенным в том, что самая первая (с конца списка) найденная сделка с DEAL_ENTRY равным DEAL_ENTRY_OUT будет относиться к самой последней закрытой позиции?
Я пробовал запускать этот пример и получил список сделок от самой первой до самой последней. Но всегда ли это будет так?Отличная рекомендация, спасибо!
Я правильно понимаю, что для того, чтобы работать со сделками из истории счёта, нужно сначала запросить их список при помощи функции HistorySelect, потом получить их количество функцией HistoryDealsTotal, а затем организовать перебор списка в цикле, как в примере к описанию функции HistoryDealGetTicket ?
Если так, то можно ли полагаться на то, что при запросе HistorySelect(0,TimeCurrent()) сделки в списке будут отсортированы от самой ранней до самой поздней?
Иначе говоря, если начать перебор полученного таким запросом списка сделок с конца [ HistoryDealGetTicket ( HistoryDealsTotal() - 1 ) ], можно ли быть уверенным в том, что самая первая (с конца списка) найденная сделка с DEAL_ENTRY равным DEAL_ENTRY_OUT будет относиться к самой последней закрытой позиции?
Я пробовал запускать этот пример и получил список сделок от самой первой до самой последней. Но всегда ли это будет так?Совсем всё неправильно.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как получить финансовые результаты по закрытым позициям?
Artyom Trishkin, 2025.11.13 12:12
Не нужно перебирать всë. Есть идентификатор позиции. Он есть в сделке. И есть выбор всех сделок по идентификатору позиции.
- 2023.11.22
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В торговом терминале МТ5 на вкладке История можно выбрать отображение разных данных (позиции, сделки, ордера, ордера и сделки). Меня интересуют данные по закрытым позициям. Вот как это отображается в терминале:
Пожалуйста, подскажите, как средствами MQL5 получить список закрытых позиций? Справку читал, но почему-то не смог там найти функции для получения списка закрытых позиций или хотя бы их количества (наподобие HistoryDealsTotal для сделок).
Конечной целью является получение финансового результата (прибыль или убыток) последней закрытой позиции, а также количество последних позиций, подряд закрытых с убытком.
В этой связи возникает дополнительный вопрос: после того, как я узнаю, как получить список закрытых позиций, есть ли гарантия, что последние закрытые позиции в этом списке находятся в самом конце (или в начале)? Иными словами, имеет ли этот список какую-то сортировку по умолчанию или нужно перебирать его весь в поисках последней закрытой позиции?