Типы торговых транзакций

В результате выполнения определенных действий с торговым счетом, его состояние изменяется. К таким действиям относятся:

  • Отсылка торгового запроса любым MQL5-приложением в клиентском терминале при помощи функций OrderSend и OrderSendAsync и его последующее исполнение;
  • Отсылка торгового запроса через графический интерфейс терминала и его последующее исполнение;
  • Срабатывание отложенных ордеров и стоп-ордеров на сервере;
  • Выполнение операций на стороне торгового сервера.

В результате данных действий, для счета выполняются торговые транзакции:

  • обработка торгового запроса;
  • изменение открытых ордеров;
  • изменение истории ордеров;
  • изменение истории сделок;
  • изменение позиций.

Например, при отсылке рыночного ордера на покупку, он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями.

Для того чтобы программист мог отслеживать действия, осуществляемые относительно торгового счета, предусмотрена функция OnTradeTransaction. При помощи данного обработчика в MQL5-приложении можно получать торговые транзакции, примененные к счету. Описание торговой транзакции передается в первом параметре OnTradeTransaction при помощи структуры MqlTradeTransaction.

Тип торговой транзакции передается в параметре type структуры MqlTradeTransaction. Возможные типы торговых транзакций описываются следующим перечислением:

ENUM_TRADE_TRANSACTION_TYPE

Идентификатор

Описание

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).

В зависимости от типа торговой транзакции, в структуре MqlTradeTransaction, описывающей ее, заполняются различные параметры. Подробное описание передаваемых данных приведено в разделе "Структура торговой транзакции".

Смотри также

Структура торговой транзакции, OnTradeTransaction