#property script_show_inputs input long inDealOutTicket = 0; #include <HistoryPosition.mqh> // https://www.mql5.com/ru/blogs/post/755007 void OnStart() { if (HistoryPositionSelect(inDealOutTicket)) Print(HistoryPositionGetInteger(POSITION_HISTORY_TICKET_DEAL_IN)); }
коллеги, вопрос на алгоритм:
использую OnTradeTransaction, проверяю, что сделка DEAL_ENTRY_OUT. Мне нужно в истории найти ее пару, т.е. сделку на вход. Для того, чтобы ее найти, мне нужно вызвать HistorySelect, куда я передаю время от и до. Как оптимально достать историю, чтобы не забирать лишние ресурсы? Как глубоко брать по времени историю, если я не знаю, когда был вход? Он мог быть и минуту назад, и неделю, и месяц. Мне нужно достать коммент и другую инфу из сделки на вход.
Если вы используете OnTradeTransaction() то в момент проверки что сделка DEAL_ENTRY_OUT получите DEAL_POSITION_ID который совпадает с POSITION_IDENTIFIER и по нему выбор всех ордеров и сделок
POSITION_IDENTIFIER | Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен. | long |
bool HistorySelectByPosition( long position_id // идентификатор позиции - POSITION_IDENTIFIER );
спасибо)
Если вы используете OnTradeTransaction() то в момент проверки что сделка DEAL_ENTRY_OUT получите DEAL_POSITION_ID который совпадает с POSITION_IDENTIFIER и по нему выбор всех ордеров и сделок
POSITION_IDENTIFIER | Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен. | long |
благодарю)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
коллеги, вопрос на алгоритм:
использую OnTradeTransaction, проверяю, что сделка DEAL_ENTRY_OUT. Мне нужно в истории найти ее пару, т.е. сделку на вход. Для того, чтобы ее найти, мне нужно вызвать HistorySelect, куда я передаю время от и до. Как оптимально достать историю, чтобы не забирать лишние ресурсы? Как глубоко брать по времени историю, если я не знаю, когда был вход? Он мог быть и минуту назад, и неделю, и месяц. Мне нужно достать коммент и другую инфу из сделки на вход.