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