Разнообразные константы, используемые для программирования торговых стратегий, разделены на следующие группы:
- Информация об исторических данных по инструменту – получение общей информации по финансовому инструменту;
- Свойства ордеров – получение информации о торговых ордерах;
- Свойства позиций – получение информации о текущих позициях;
- Свойства сделок – получение информации о совершенных сделках;
- Типы торговых операций – описание доступных торговых операций;
- Типы торговых транзакций — описание возможных типов торговых транзакций;
- Виды заявок в стакане цен — для разделения заявок по направлению запрашиваемой торговой операции.
Информация об исторических данных по инструменту
При доступе к таймсериям для получения дополнительной информации об инструменте используется функция 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()
| Идентификатор | Описание | Тип |
| 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()
| Идентификатор | Описание | Тип |
| 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()
| Идентификатор | Описание | Тип |
| ORDER_SYMBOL | Символ, по которому выставлен ордер | string |
| ORDER_COMMENT | Комментарий | string |
| ORDER_EXTERNAL_ID | Идентификатор ордера во внешней торговой системе (на бирже) | string |
При отправке торгового запроса функцией OrderSend() для некоторых операций необходимо указать тип ордера. Тип ордера указывается в поле type специальной структуры MqlTradeRequest, и может принимать значения из перечисления 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.
| Идентификатор | Описание |
| 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.
| Идентификатор | Описание |
| 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.
| Идентификатор | Описание |
| 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.
| Идентификатор | Описание |
| 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()
| Идентификатор | Описание | Тип |
| 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()
| Идентификатор | Описание | Тип |
| POSITION_SYMBOL | Символ, по которому открыта позиция | string |
| POSITION_COMMENT | Комментарий к позиции | string |
Направление открытой позиции (покупка или продажа) определяется значением из перечисления ENUM_POSITION_TYPE. Для получения типа открытой позиции используйте функцию PositionGetInteger() с модификатором POSITION_TYPE.
| Идентификатор | Описание |
| POSITION_TYPE_BUY | Покупка |
| POSITION_TYPE_SELL | Продажа |
В свойстве POSITION_REASON содержится причина открытия позиции. Позиция может быть открыта в результате срабатывания ордера, который был выставлен из десктопного терминала, из мобильного приложения, с помощью советника и т.д. Возможные значения POSITION_REASON описываются в перечислении ENUM_POSITION_REASON.
| Идентификатор | Описание |
| POSITION_REASON_CLIENT | Позиция открыта в результате срабатывания ордера, выставленного из десктопного терминала |
| POSITION_REASON_MOBILE | Позиция открыта в результате срабатывания ордера, выставленного из мобильного приложения |
| POSITION_REASON_WEB | Позиция открыта в результате срабатывания ордера, выставленного из веб-платформы |
| POSITION_REASON_EXPERT | Позиция открыта в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом |
Свойства сделок
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида HistoryDealGet…(), возвращающие значения из соответствующих перечислений.
Для функции HistoryDealGetInteger()
| Идентификатор | Описание | Тип |
| 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()
| Идентификатор | Описание | Тип |
| DEAL_VOLUME | Объем сделки | double |
| DEAL_PRICE | Цена сделки | double |
| DEAL_COMMISSION | Комиссия по сделке | double |
| DEAL_SWAP | Накопленный своп при закрытии | double |
| DEAL_PROFIT | Финансовый результат сделки | double |
Для функции HistoryDealGetString()
| Идентификатор | Описание | Тип |
| DEAL_SYMBOL | Имя символа, по которому произведена сделка | string |
| DEAL_COMMENT | Комментарий к сделке | string |
| DEAL_EXTERNAL_ID | Идентификатор сделки во внешней торговой системе (на бирже) | string |
Каждая сделка характеризуется типом, возможные значения перечислены в ENUM_DEAL_TYPE. Для получения информации о типе сделки используйте функцию HistoryDealGetInteger() с модификатором 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.
| Идентификатор | Описание |
| 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.
| Идентификатор | Описание |
| 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 торговых сигналов:
| Константа | Описание |
| SIGNAL_BASE_BALANCE | Баланс счета |
| SIGNAL_BASE_EQUITY | Средства на счете |
| SIGNAL_BASE_GAIN | Прирост счета в процентах |
| SIGNAL_BASE_MAX_DRAWDOWN | Максимальная просадка |
| SIGNAL_BASE_PRICE | Цена подписки на сигнал |
| SIGNAL_BASE_ROI | Значение ROI (Return on Investment) сигнала в % |
Перечисления свойств типа 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 торговых сигналов:
| Константа | Описание |
| SIGNAL_BASE_AUTHOR_LOGIN | Логин автора сигнала |
| SIGNAL_BASE_BROKER | Наименование брокера (компании) |
| SIGNAL_BASE_BROKER_SERVER | Сервер брокера |
| SIGNAL_BASE_NAME | Имя сигнала |
| SIGNAL_BASE_CURRENCY | Валюта счета сигнала |
Перечисления свойств типа double настроек копирования торговых сигналов:
| Константа | Описание |
| SIGNAL_INFO_EQUITY_LIMIT | Процент для конвертации объема сделки |
| SIGNAL_INFO_SLIPPAGE | Величина проскальзывания, с которым выставляются рыночные ордера при синхронизации позиций и копировании сделок |
| SIGNAL_INFO_VOLUME_PERCENT | Значение ограничения по средствам для сигнала, r/o |
Перечисления свойств типа 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 настроек копирования торговых сигналов:
| Константа | Описание |
| SIGNAL_INFO_NAME | Имя сигнала, r/o |