Особенности языка mql5, тонкости и приёмы работы - страница 23

Alexey Viktorov
22150
Alexey Viktorov  
Artyom Trishkin:
Нет, не надо. Нужно просто знать как была закрыта последняя позиция (а для этого не нужно сильно в историю углубляться - достаточно отфильтровать "свои" сделки) - дальше последней позиции вглубь истории знания больше статистические, нежели оперативные.
Ну так всё это делается в OnTradeTransaction. Только в триггер опубликованный fxsaber: я-бы добавил проверку по символу, магику и  сделки на DEAL_ENTRY_OUT‌
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
Artyom Trishkin
Модератор
43683
Artyom Trishkin  
Alexey Viktorov:
Ну так всё это делается в OnTradeTransaction. Только в триггер опубликованный fxsaber: я-бы добавил проверку по символу, магику и  сделки на DEAL_ENTRY_OUT‌
А в тестере как будешь проверять?
Alexey Viktorov
22150
Alexey Viktorov  
Artyom Trishkin:
А в тестере как будешь проверять?
Так-же. В чём разница? Именно в тестере и дебагере всё это и пробовал чтобы понять как работает.
fxsaber
14970
fxsaber  
Alexey Viktorov:

Невнимательно посмотрел этот триггер, но не увидел проверки сделки на DEAL_ENTRY_OUT‌. Ведь именно эта сделка говорит о закрытии позиции на hadge счетах.

Проверка не нужна. В тестере триггер работать не будет, т.к. тестер не генерирует некоторые Trade-события.
Alexey Viktorov
22150
Alexey Viktorov  
fxsaber:
Проверка не нужна. В тестере триггер работать не будет, т.к. тестер не генерирует некоторые Trade-события.

Какие, например из этого списка?

TRADE_TRANSACTION_ORDER_ADD

Добавление нового открытого ордера.

TRADE_TRANSACTION_ORDER_UPDATE

Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния ORDER_STATE_STARTED в ORDER_STATE_PLACED или из ORDER_STATE_PLACED в ORDER_STATE_PARTIAL и т.д.).

TRADE_TRANSACTION_ORDER_DELETE

Удаление ордера из списка открытых. Ордер может быть удален из открытых в результате выставления соответствующего запроса либо в результате исполнения (заливки) и переноса в историю.

TRADE_TRANSACTION_DEAL_ADD

Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.

TRADE_TRANSACTION_DEAL_UPDATE

Изменение сделки в истории. Возможны ситуации, когда ранее исполненная сделка изменяется на сервере. Например, сделка была изменена во внешней торговой системе (бирже), куда она была выведена брокером.

TRADE_TRANSACTION_DEAL_DELETE

Удаление сделки из истории. Возможны ситуации, когда ранее исполненная сделка удаляется на сервере. Например, сделка была удалена во внешней торговой системе (бирже), куда она была выведена брокером.

TRADE_TRANSACTION_HISTORY_ADD

Добавление ордера в историю в результате исполнения или отмены.

TRADE_TRANSACTION_HISTORY_UPDATE

Изменение ордера, находящегося в истории ордеров. Данный тип предусмотрен для расширения функциональности на стороне торгового сервера.

TRADE_TRANSACTION_HISTORY_DELETE

Удаление ордера из истории ордеров. Данный тип предусмотрен для расширения функциональности на стороне торгового сервера.

TRADE_TRANSACTION_POSITION

Изменение позиции, не связанное с исполнением сделки. Данный тип транзакции свидетельствует именно о том, что позиция была изменена на стороне торгового сервера. У позиции может быть изменен объем, цена открытия, а также уровни Stop Loss и Take Profit. Информация об изменениях передается в структуре MqlTradeTransaction через обработчик OnTradeTransaction. Изменение позиции (добавление, изменение или ликвидация) в результате совершения сделки не влечет за собой появление транзакции TRADE_TRANSACTION_POSITION.

TRADE_TRANSACTION_REQUEST

Уведомление о том, что торговый запрос обработан сервером, и результат его обработки получен. Для транзакций данного типа в структуре MqlTradeTransaction необходимо анализировать только одно поле - type (тип транзакции). Для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction (request и result).


‌Разве что выделенное событие не генерируется. Так а оно надо кому-то?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
fxsaber
14970
fxsaber  
Alexey Viktorov:

Какие, например из этого списка?

Trade-событие - мой термин.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.02.28 19:30

Может быть открыта BUY-позиция и действующий BUY-ордер. Выше привел кодо-пример, но проще, наверное, на пальцах. Как идет срабатывания TP открытой позиции

  • Цена доходит до TP BUY-позиции.
  • Торговый сервер создает соответствующуй действующий SELL-ордер.
  • После чего в терминале одновременно присутствуют BUY-позиция и SELL-ордер.
  • SELL-ордер исполняется, попадая в историю и порождая там же сделку.
  • На основании данных сделки происходит закрытие исходной BUY-позиции, которая никуда не попадает - присутствует косвенно в истории сделок.

Выделенное Trade-событие в тестере не происходит.

Alexey Viktorov
22150
Alexey Viktorov  
fxsaber:

Trade-событие - мой термин.

Выделенное Trade-событие в тестере не происходит.

На мой взгляд это не событие. Это тонкости последовательности выполнения приказов. Зачем мне ловить момент когда ордер SELL для закрытия позиции BUY находится в терминале одновременно с самой позицией???

Может быть беда, что последовательность прихода событий может не соблюдаться, но ... что главное в торговле? разве отслеживание потока событий и замеры скорости? Если мне откроют позицию хоть завтра, но по заявленной цене и закроют её хоть вчера, но с прибылью я возражать не буду.‌

fxsaber
14970
fxsaber  
Alexey Viktorov:

На мой взгляд это не событие. Это тонкости последовательности выполнения приказов. Зачем мне ловить момент когда ордер SELL для закрытия позиции BUY находится в терминале одновременно с самой позицией???

Прочтите название ветки.
Alexey Viktorov
22150
Alexey Viktorov  
fxsaber:
Прочтите название ветки.
А что от этого изменится?
Artyom Trishkin
Модератор
43683
Artyom Trishkin  
Alexey Viktorov:
А что от этого изменится?
Ничего не изменится, но то, что были описаны именно тонкости - тут спору никакого нет.
И вопрос остаётся: как этой функцией будешь в тестере ловить факты закрытия по тейкам/стопам?