- Информация об исторических данных по инструменту
- Свойства ордеров
- Свойства позиций
- Свойства сделок
- Типы торговых операций
- Типы торговых транзакций
- Виды заявок в стакане цен
- Свойства сигналов
Типы торговых транзакций
В результате выполнения определенных действий с торговым счетом, его состояние изменяется. К таким действиям относятся:
- Отсылка торгового запроса любым 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, описывающей ее, заполняются различные параметры. Подробное описание передаваемых данных приведено в разделе "Структура торговой транзакции".
Смотри также