Торговые константы

Разнообразные константы, используемые для программирования торговых стратегий, разделены на следующие группы:

  • Информация об исторических данных по инструменту – получение общей информации по финансовому инструменту;
  • Свойства ордеров – получение информации о торговых ордерах;
  • Свойства позиций – получение информации о текущих позициях;
  • Свойства сделок – получение информации о совершенных сделках;
  • Типы торговых операций – описание доступных торговых операций;
  • Типы торговых транзакций — описание возможных типов торговых транзакций;
  • Виды заявок в стакане цен — для разделения заявок по направлению запрашиваемой торговой операции.

Информация об исторических данных по инструменту

При доступе к таймсериям для получения дополнительной информации об инструменте используется функция SeriesInfoInteger(). В качестве параметра этой функции передается идентификатор требуемого свойства, который может принимать одно из значений перечисления ENUM_SERIES_INFO_INTEGER.

ENUM_SERIES_INFO_INTEGER

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

Описание

Тип свойства

SERIES_BARS_COUNT

Количество баров по символу-периоду на данный момент

long

SERIES_FIRSTDATE

Самая первая дата по символу-периоду на данный момент

datetime

SERIES_LASTBAR_DATE

Время открытия последнего бара по символу-периоду

datetime

SERIES_SERVER_FIRSTDATE

Самая первая дата в истории по символу на сервере независимо от периода

datetime

SERIES_TERMINAL_FIRSTDATE

Самая первая дата в истории по символу в клиентском терминале независимо от периода

datetime

SERIES_SYNCHRONIZED

Признак синхронизированности данных по символу/периоду на данный момент

bool

 

Свойства ордеров

Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций OrderGet…() и HistoryOrderGet…().

Для функций OrderGetInteger() и HistoryOrderGetInteger()

ENUM_ORDER_PROPERTY_INTEGER

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

Описание

Тип

ORDER_TICKET

Тикет ордера. Уникальное число, которое присваивается каждому ордеру

long

ORDER_TIME_SETUP

Время постановки ордера

datetime

ORDER_TYPE

Тип ордера

ENUM_ORDER_TYPE

ORDER_STATE

Статус ордера

ENUM_ORDER_STATE

ORDER_TIME_EXPIRATION

Время истечения ордера

datetime

ORDER_TIME_DONE

Время исполнения или снятия ордера

datetime

ORDER_TIME_SETUP_MSC

Время установки ордера на исполнение в миллисекундах с 01.01.1970

long

ORDER_TIME_DONE_MSC

Время исполнения/снятия ордера в миллисекундах с 01.01.1970

long

ORDER_TYPE_FILLING

Тип исполнения по остатку

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

Время жизни ордера

ENUM_ORDER_TYPE_TIME

ORDER_MAGIC

Идентификатор эксперта выставившего ордер (предназначен для того, чтобы каждый эксперт выставлял свой собственный уникальный номер)

long

ORDER_REASON

Причина или источник выставления ордера

ENUM_ORDER_REASON

ORDER_POSITION_ID

Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию. Идентификатор этой позиции и устанавливается исполненному ордеру в этот момент.

long

ORDER_POSITION_BY_ID

Идентификатор встречной позиции для ордеров типа ORDER_TYPE_CLOSE_BY.

long

Для функций OrderGetDouble() и HistoryOrderGetDouble()

ENUM_ORDER_PROPERTY_DOUBLE

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

Описание

Тип

ORDER_VOLUME_INITIAL

Первоначальный объем при постановке ордера

double

ORDER_VOLUME_CURRENT

Невыполненный объем

double

ORDER_PRICE_OPEN

Цена, указанная в ордере

double

ORDER_SL

Уровень Stop Loss

double

ORDER_TP

Уровень Take Profit

double

ORDER_PRICE_CURRENT

Текущая цена по символу ордера

double

ORDER_PRICE_STOPLIMIT

Цена постановки Limit ордера при срабатывании StopLimit ордера

double

Для функций OrderGetString() и HistoryOrderGetString()

ENUM_ORDER_PROPERTY_STRING

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

Описание

Тип

ORDER_SYMBOL

Символ, по которому выставлен ордер

string

ORDER_COMMENT

Комментарий

string

ORDER_EXTERNAL_ID

Идентификатор ордера во внешней торговой системе (на бирже)

string

 

При отправке торгового запроса функцией OrderSend() для некоторых операций необходимо указать тип ордера. Тип ордера указывается в поле type специальной структуры MqlTradeRequest, и может принимать значения из перечисления ENUM_ORDER_TYPE.

ENUM_ORDER_TYPE

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

Описание

ORDER_TYPE_BUY

Рыночный ордер на покупку

ORDER_TYPE_SELL

Рыночный ордер на продажу

ORDER_TYPE_BUY_LIMIT

Отложенный ордер Buy Limit

ORDER_TYPE_SELL_LIMIT

Отложенный ордер Sell Limit

ORDER_TYPE_BUY_STOP

Отложенный ордер Buy Stop

ORDER_TYPE_SELL_STOP

Отложенный ордер Sell Stop

ORDER_TYPE_BUY_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Buy Limit по цене StopLimit

ORDER_TYPE_SELL_STOP_LIMIT

По достижении цены ордера выставляется отложенный ордер Sell Limit по цене StopLimit

ORDER_TYPE_CLOSE_BY

Ордер на закрытие позиции встречной позицией

 

Каждый ордер имеет статус, описывающий его состояние. Для получения информации используйте функцию OrderGetInteger() или HistoryOrderGetInteger() с модификатором ORDER_STATE. Допустимые значения хранятся в перечислении ENUM_ORDER_STATE.

ENUM_ORDER_STATE

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

Описание

ORDER_STATE_STARTED

Ордер проверен на корректность, но еще не принят брокером

ORDER_STATE_PLACED

Ордер принят

ORDER_STATE_CANCELED

Ордер снят клиентом

ORDER_STATE_PARTIAL

Ордер выполнен частично

ORDER_STATE_FILLED

Ордер выполнен полностью

ORDER_STATE_REJECTED

Ордер отклонен

ORDER_STATE_EXPIRED

Ордер снят по истечении срока его действия

ORDER_STATE_REQUEST_ADD

Ордер в состоянии регистрации (выставление в торговую систему)

ORDER_STATE_REQUEST_MODIFY

Ордер в состоянии модификации (изменение его параметров)

ORDER_STATE_REQUEST_CANCEL

Ордер в состоянии удаления (удаление из торговой системы)

 

При отправке торгового запроса функцией OrderSend() для ордера можно задать политику исполнения в поле type_filling в специальной структуре MqlTradeRequest, допустимы значения из перечисления ENUM_ORDER_TYPE_FILLING. Для получения значения этого свойства используйте функцию OrderGetInteger() или HistoryOrderGetInteger() с модификатором ORDER_TYPE_FILLING.

ENUM_ORDER_TYPE_FILLING

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

Описание

ORDER_FILLING_FOK

Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме. Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен. Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.

ORDER_FILLING_IOC

Означает согласие совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере. В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен.

ORDER_FILLING_RETURN

Данный режим используется для рыночных (ORDER_TYPE_BUY и ORDER_TYPE_SELL), лимитных и стоп-лимитных ордеров (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT и ORDER_TYPE_SELL_STOP_LIMIT) и только в режимах «Исполнение по рынку» и «Биржевое исполнение». В случае частичного исполнения рыночный или лимитный ордер с остаточным объемом не снимается, а продолжает действовать.

Для ордеров ORDER_TYPE_BUY_STOP_LIMIT и ORDER_TYPE_SELL_STOP_LIMIT при активации будет создан соответствующий лимитный ордер ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT с типом исполнения ORDER_FILLING_RETURN.

 

Срок действия ордера можно задать в поле type_time специальной структуры MqlTradeRequest при отправке торгового запроса функцией OrderSend(). Допустимы значения из перечисления ENUM_ORDER_TYPE_TIME. Для получения значения этого свойства используйте функцию OrderGetInteger() или HistoryOrderGetInteger() с модификатором ORDER_TYPE_TIME.

ENUM_ORDER_TYPE_TIME

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

Описание

ORDER_TIME_GTC

Ордер будет находится в очереди до тех пор, пока не будет снят

ORDER_TIME_DAY

Ордер будет действовать только в течение текущего торгового дня

ORDER_TIME_SPECIFIED

Ордер будет действовать до даты истечения

ORDER_TIME_SPECIFIED_DAY

Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.

 

В свойстве ORDER_REASON содержится причина выставления ордера. Ордер может быть выставлен с помощью MQL5 программы, или из мобильного приложения, или в результате наступления события StopOut, и т.д.  Возможные значения ORDER_REASON описываются в перечислении ENUM_ORDER_REASON.

ENUM_ORDER_REASON

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

Описание

ORDER_REASON_CLIENT

Ордер выставлен из десктопного терминала

ORDER_REASON_MOBILE

Ордер выставлен из мобильного приложения

ORDER_REASON_WEB

Ордер выставлен из веб-платформы

ORDER_REASON_EXPERT

Ордер выставлен из MQL5-программы – советником или скриптом

ORDER_REASON_SL

Ордер выставлен в результате срабатывания Stop Loss

ORDER_REASON_TP

Ордер выставлен в результате срабатывания Take Profit

ORDER_REASON_SO

Ордер выставлен в результате наступления события Stop Out

 

Свойства позиций

Результатом совершения торговых операций являются открытие позиции, изменение её объема и/или направления, или ее ликвидация. Торговые операции проводятся на основание ордеров, отправляемых функцией OrderSend() в виде торговых запросов. Для каждого финансового инструмента (символа) возможна только одна открытая позиция. Позиция имеет набор свойств, доступных для чтений функциями PositionGet…().

Для функции PositionGetInteger()

ENUM_POSITION_PROPERTY_INTEGER

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

Описание

Тип

POSITION_TICKET

Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта позиция, следует использовать свойство POSITION_IDENTIFIER.
 

Значение POSITION_TICKET соответствует MqlTradeRequest::position.

long

POSITION_TIME

Время открытия позиции

datetime

POSITION_TIME_MSC

Время открытия позиции в миллисекундах с 01.01.1970

long

POSITION_TIME_UPDATE

Время изменения позиции в секундах с 01.01.1970

long

POSITION_TIME_UPDATE_MSC

Время изменения позиции в миллисекундах с 01.01.1970

long

POSITION_TYPE

Тип позиции

ENUM_POSITION_TYPE

POSITION_MAGIC

Magic number для позиции (смотри ORDER_MAGIC)

long

POSITION_IDENTIFIER

Идентификатор позиции — это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.

 

Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.

 

При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.

long

POSITION_REASON

Причина открытия позиции

ENUM_POSITION_REASON

Для функции PositionGetDouble()

ENUM_POSITION_PROPERTY_DOUBLE

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

Описание

Тип

POSITION_VOLUME

Объем позиции

double

POSITION_PRICE_OPEN

Цена позиции

double

POSITION_SL

Уровень Stop Loss для открытой позиции

double

POSITION_TP

Уровень Take Profit для открытой позиции

double

POSITION_PRICE_CURRENT

Текущая цена по символу

double

POSITION_SWAP

Накопленный своп

double

POSITION_PROFIT

Текущая прибыль

double

Для функции PositionGetString()

ENUM_POSITION_PROPERTY_STRING

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

Описание

Тип

POSITION_SYMBOL

Символ, по которому открыта позиция

string

POSITION_COMMENT

Комментарий к позиции

string

 

Направление открытой позиции (покупка или продажа) определяется значением из перечисления ENUM_POSITION_TYPE. Для получения типа открытой позиции используйте функцию PositionGetInteger() с модификатором POSITION_TYPE.

ENUM_POSITION_TYPE

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

Описание

POSITION_TYPE_BUY

Покупка

POSITION_TYPE_SELL

Продажа

 

В свойстве POSITION_REASON содержится причина открытия позиции. Позиция может быть открыта в результате срабатывания ордера, который был выставлен из десктопного терминала, из мобильного приложения, с помощью советника и т.д. Возможные значения POSITION_REASON описываются в перечислении ENUM_POSITION_REASON.

ENUM_POSITION_REASON

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

Описание

POSITION_REASON_CLIENT

Позиция открыта в результате срабатывания ордера, выставленного из десктопного терминала

POSITION_REASON_MOBILE

Позиция открыта в результате срабатывания ордера, выставленного из мобильного приложения

POSITION_REASON_WEB

Позиция открыта в результате срабатывания ордера, выставленного из веб-платформы

POSITION_REASON_EXPERT

Позиция открыта в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом

 

Свойства сделок

Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида HistoryDealGet…(), возвращающие значения из соответствующих перечислений.

Для функции 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

Для функции HistoryDealGetDouble()

ENUM_DEAL_PROPERTY_DOUBLE

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

Описание

Тип

DEAL_VOLUME

Объем сделки

double

DEAL_PRICE

Цена сделки

double

DEAL_COMMISSION

Комиссия по сделке

double

DEAL_SWAP

Накопленный своп при закрытии

double

DEAL_PROFIT

Финансовый результат сделки

double

Для функции HistoryDealGetString()

ENUM_DEAL_PROPERTY_STRING

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

Описание

Тип

DEAL_SYMBOL

Имя символа, по которому произведена сделка

string

DEAL_COMMENT

Комментарий к сделке

string

DEAL_EXTERNAL_ID

Идентификатор сделки во внешней торговой системе (на бирже)

string

 

Каждая сделка характеризуется типом, возможные значения перечислены в ENUM_DEAL_TYPE. Для получения информации о типе сделки используйте функцию HistoryDealGetInteger() с модификатором DEAL_TYPE.

ENUM_DEAL_TYPE

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

Описание

DEAL_TYPE_BUY

Покупка

DEAL_TYPE_SELL

Продажа

DEAL_TYPE_BALANCE

Начисление баланса

DEAL_TYPE_CREDIT

Начисление кредита

DEAL_TYPE_CHARGE

Дополнительные сборы

DEAL_TYPE_CORRECTION

Корректирующая запись

DEAL_TYPE_BONUS

Перечисление бонусов

DEAL_TYPE_COMMISSION

Дополнительные комиссии

DEAL_TYPE_COMMISSION_DAILY

Комиссия, начисляемая в конце торгового дня

DEAL_TYPE_COMMISSION_MONTHLY

Комиссия, начисляемая в конце месяца

DEAL_TYPE_COMMISSION_AGENT_DAILY

Агентская комиссия, начисляемая в конце торгового дня

DEAL_TYPE_COMMISSION_AGENT_MONTHLY

Агентская комиссия, начисляемая в конце месяца

DEAL_TYPE_INTEREST

Начисления процентов на свободные средства

DEAL_TYPE_BUY_CANCELED

Отмененная сделка покупки. Возможная ситуация, когда ранее совершенная сделка на покупку отменяется. В таком случае тип ранее совершенной сделки (DEAL_TYPE_BUY) меняется на DEAL_TYPE_BUY_CANCELED, а ее прибыль/убыток обнуляется. Ранее полученная прибыль/убыток начисляется/списывается со счета отдельной балансовой операцией

DEAL_TYPE_SELL_CANCELED

Отмененная сделка продажи. Возможная ситуация, когда ранее совершенная сделка на продажу отменяется. В таком случае тип ранее совершенной сделки (DEAL_TYPE_SELL) меняется на DEAL_TYPE_SELL_CANCELED, а ее прибыль/убыток обнуляется. Ранее полученная прибыль/убыток начисляется/списывается со счета отдельной балансовой операцией

DEAL_DIVIDEND

Начисление дивиденда

DEAL_DIVIDEND_FRANKED

Начисление франкированного дивиденда (освобожденного от уплаты налога)

DEAL_TAX

Начисление налога

 

Сделки различаются не только по типу, задаваемого в перечислении ENUM_DEAL_TYPE, но и по способу изменения позиции. Это может быть простое открытие позиции или наращивание объема ранее открытой позиции (вход в рынок), закрытие позиции сделкой противоположного направления соответствующим объемом (выход их рынка) или переворот позиции в том случае, когда объем сделки в противоположном направлении перекрывает объем ранее открытой позиции.

Все эти ситуации описаны значениями из перечисления ENUM_DEAL_ENTRY. Для получения этой информации о сделке используйте функцию HistoryDealGetInteger() с модификатором DEAL_ENTRY.

ENUM_DEAL_ENTRY

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

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией

 

В свойстве DEAL_REASON содержится причина проведения сделки. Сделка может быть проведена в результате срабатывания ордера, выставленного из мобильного приложения или из MQL5 программы; либо в результате наступления события StopOut или начисления/списания вариационной маржи, и т.д. Возможные значения DEAL_REASON описываются в перечислении ENUM_DEAL_REASON. Для неторговых сделок, вызванных операциями изменения баланса, кредита, начисления комиссий и прочих, в качестве причины указывается DEAL_REASON_CLIENT.

ENUM_DEAL_REASON

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

Описание

DEAL_REASON_CLIENT

Сделка проведена в результате срабатывания ордера, выставленного из десктопного терминала

DEAL_REASON_MOBILE

Сделка проведена в результате срабатывания ордера, выставленного из мобильного приложения

DEAL_REASON_WEB

Сделка проведена в результате срабатывания ордера, выставленного из веб-платформы

DEAL_REASON_EXPERT

Сделка проведена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом

DEAL_REASON_SL

Сделка проведена в результате срабатывания ордера Stop Loss

DEAL_REASON_TP

Сделка проведена в результате срабатывания ордера Take Profit

DEAL_REASON_SO

Сделка проведена в результате наступления события Stop Out

DEAL_REASON_ROLLOVER

Сделка проведена по причине переноса позиции

DEAL_REASON_VMARGIN

Сделка проведена по причине начисления/списания вариационной маржи

DEAL_REASON_SPLIT

Сделка проведена по причине сплита (понижения цены) инструмента, по которому имелась позиция на момент проведения сплита

 

Типы торговых операций

Торговля осуществляется посредством отправки с помощью функции OrderSend() приказов на открытие позиций, а также приказов на установку, модификацию и удаление отложенных ордеров. Каждый торговый приказ содержит указание на тип запрашиваемой торговой операции. Торговые операции описаны в перечислении ENUM_TRADE_REQUEST_ACTIONS.

ENUM_TRADE_REQUEST_ACTIONS

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

Описание

TRADE_ACTION_DEAL

Установить торговый ордер на немедленное совершение сделки с указанными параметрами (поставить рыночный ордер)

TRADE_ACTION_PENDING

Установить торговый ордер на совершение сделки при указанных условиях (отложенный ордер)

TRADE_ACTION_SLTP

Изменить значения Stop Loss и Take Profit у открытой позиции

TRADE_ACTION_MODIFY

Изменить параметры ранее установленного торгового ордера

TRADE_ACTION_REMOVE

Удалить ранее выставленный отложенный торговый ордер

TRADE_ACTION_CLOSE_BY

Закрыть позицию встречной

 

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

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

  • Отсылка торгового запроса любым 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, описывающей ее, заполняются различные параметры. Подробное описание передаваемых данных приведено в разделе «Структура торговой транзакции».

 

Виды заявок в стакане цен

Для биржевых инструментов доступно окно «Стакан цен», в котором можно посмотреть текущие заявки на покупку и продажу. Для каждой заявки указано желаемое направление торговой операции, требуемый объем и запрашиваемая цена.

Для получения информации о текущем состоянии стакана цен средствами языка MQL5 предназначена функция MarketBookGet(), которая помещает «снимок стакана» в массив структур MqlBookInfo. Каждый элемент этого массива в поле type содержит информацию о направлении заявки – это значение из перечисления ENUM_BOOK_TYPE.

ENUM_BOOK_TYPE

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

Описание

BOOK_TYPE_SELL

Заявка на продажу

BOOK_TYPE_BUY

Заявка на покупку

BOOK_TYPE_SELL_MARKET

Заявка на продажу по рыночной цене

BOOK_TYPE_BUY_MARKET

Заявка на покупку по рыночной цене

 

 

Свойства сигналов

Значения перечислений для работы с торговыми сигналами и настройками их копирования.

Перечисления свойств типа double торговых сигналов:

ENUM_SIGNAL_BASE_DOUBLE

Константа

Описание

SIGNAL_BASE_BALANCE

Баланс счета

SIGNAL_BASE_EQUITY

Средства на счете

SIGNAL_BASE_GAIN

Прирост счета в процентах

SIGNAL_BASE_MAX_DRAWDOWN

Максимальная просадка

SIGNAL_BASE_PRICE

Цена подписки на сигнал

SIGNAL_BASE_ROI

Значение ROI (Return on Investment) сигнала в %

Перечисления свойств типа integer торговых сигналов:

ENUM_SIGNAL_BASE_INTEGER

Константа

Описание

SIGNAL_BASE_DATE_PUBLISHED

Дата публикации сигнала (когда стал доступен для подписки)

SIGNAL_BASE_DATE_STARTED

Дата начала мониторинга сигнала

SIGNAL_BASE_DATE_UPDATED

Дата последнего обновления торговой статистики сигнала

SIGNAL_BASE_ID

ID сигнала

SIGNAL_BASE_LEVERAGE

Плечо торгового счета

SIGNAL_BASE_PIPS

Результат торговли в пипсах

SIGNAL_BASE_RATING

Позиция в рейтинге сигналов

SIGNAL_BASE_SUBSCRIBERS

Количество подписчиков

SIGNAL_BASE_TRADES

Количество трейдов

SIGNAL_BASE_TRADE_MODE

Тип счета (0-реальный счет, 1-демо-счет, 2-конкурсный счет)

Перечисления свойств типа string торговых сигналов:

ENUM_SIGNAL_BASE_STRING

Константа

Описание

SIGNAL_BASE_AUTHOR_LOGIN

Логин автора сигнала

SIGNAL_BASE_BROKER

Наименование брокера (компании)

SIGNAL_BASE_BROKER_SERVER

Сервер брокера

SIGNAL_BASE_NAME

Имя сигнала

SIGNAL_BASE_CURRENCY

Валюта счета сигнала

Перечисления свойств типа double настроек копирования торговых сигналов:

ENUM_SIGNAL_INFO_DOUBLE

Константа

Описание

SIGNAL_INFO_EQUITY_LIMIT

Процент для конвертации объема сделки

SIGNAL_INFO_SLIPPAGE

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

SIGNAL_INFO_VOLUME_PERCENT

Значение ограничения по средствам для сигнала, r/o

Перечисления свойств типа integer настроек копирования торговых сигналов:

ENUM_SIGNAL_INFO_INTEGER

Константа

Описание

SIGNAL_INFO_CONFIRMATIONS_DISABLED

Флаг разрешения синхронизации без показа диалога подтверждения

SIGNAL_INFO_COPY_SLTP

Флаг копирования Stop Loss и Take Profit

SIGNAL_INFO_DEPOSIT_PERCENT

Ограничения по депозиту (в %)

SIGNAL_INFO_ID

id сигнала, r/o

SIGNAL_INFO_SUBSCRIPTION_ENABLED

Флаг разрешения на копирование сделок по подписке

SIGNAL_INFO_TERMS_AGREE

Флаг согласия с условиями использования сервиса «Сигналы», r/o

Перечисления свойств типа string настроек копирования торговых сигналов:

ENUM_SIGNAL_INFO_STRING

Константа

Описание

SIGNAL_INFO_NAME

Имя сигнала, r/o