Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 762
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И не позиции, и не сделки нужно перебирать, а ордера, т.к. сначала идет ордер, потом сделка, потом позиция.
Почему только ордера? Разве сделка не имеет идентификатор (тикет) позиции?
DEAL_POSITION_ID
Почему только ордера? Разве сделка не имеет идентификатор (тикет) позиции?
DEAL_POSITION_ID
Да, Вы правы. И ордера и сделки имеют идентификатор позиции. Однако, в общем случае нужно знать, что позиции присваивается идентификатор первого ордера, инициировавшего сделку. Соответственно, "сущностью" инициирующей позицию, является ордер, а не сделка. И перебирать нужно ордера, а не сделки.
Из документации:
Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
Да, Вы правы. И ордера и сделки имеют идентификатор позиции. Однако, в общем случае нужно знать, что позиции присваивается идентификатор первого ордера, инициировавшего сделку. Соответственно, "сущностью" инициирующей позицию, является ордер, а не сделка. И перебирать нужно ордера, а не сделки.
Из документации:
Я не собираюсь спорить, именно так и написано в документации. Но в другом месте той-же самой документации написано "Как правило..." значит возможны несовпадения. И на такое "как правило" я однажды нарвался...
position
Тикет позиции. Следует заполнять при изменении и закрытии позиции для ее однозначной идентификации. Как правило, соответствует тикету ордера, в результате которого позиция была открыта.
Подскажите, как получить с истории тикет, который был при трейде. На скрине он "63214735"
Здесь Вы ищите номер Позиции, в списке Сделок , а то неправильно.
Вот скрипт демонстрирующий что дает HistorySelectByPosition
А так выглядит резултат :
0 = Открытие Позиции
1 = Закрытие Позиции
Если не получаете результат = то ввели не Тикет Позиции
Аналогичной результат можно получить и если начать с Тикет Сделки :
Для функции HistoryDealGetInteger()
ENUM_DEAL_PROPERTY_INTEGER
Идентификатор
Описание
Тип
DEAL_TICKET
Тикет сделки. Уникальное число, которое присваивается каждой сделке
long
DEAL_ORDER
Ордер, на основание которого выполнена сделка
long
DEAL_TIME
Время совершения сделки
datetime
DEAL_TIME_MSC
Время совершения сделки в миллисекундах с 01.01.1970
long
DEAL_TYPE
Тип сделки
ENUM_DEAL_TYPE
DEAL_ENTRY
Направление сделки – вход в рынок, выход из рынка или разворот
ENUM_DEAL_ENTRY
DEAL_MAGIC
Magic number для сделки (смотри ORDER_MAGIC)
long
DEAL_REASON
Причина или источник проведения сделки
ENUM_DEAL_REASON
DEAL_POSITION_ID
Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.
long
Спасибо!
Мне нужно было это: HistoryOrderGetTicket
Спасибо!
Мне нужно было это: HistoryOrderGetTicket
Ордер может быть лотом 1.0. А вот исполниться он может частично, например, лотом 0.9 - остаток будет отклонён (зависит от режима исполнения). Тогда сделка будет лотом 0.9. И когда начнёте искать лот по ордеру, то будут несоответствия.
Прошу помощи - нужен вменяемый код для получения значения окружения OHLC - имеющиеся сильно тормозят
Вариант 1
Вариант 2
Прошу помощи - нужен вменяемый код для получения значения окружения OHLC - имеющиеся сильно тормозят
Вариант 1
Вариант 2
Выложите кусок кода, как вы их применяете
Я не знаю, какой кусок тормозит - применяю по разному, в том числе в циклах...
вот пример
Я не знаю, какой кусок тормозит - применяю по разному, в том числе в циклах...
Вроде так в циклах, и можно обойтись без функции