- Информация об исторических данных по инструменту
- Свойства ордеров
- Свойства позиций
- Свойства сделок
- Типы торговых операций
- Типы торговых транзакций
- Виды заявок в стакане цен
- Свойства сигналов
Свойства ордеров
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций OrderGet...() и HistoryOrderGet...().
Для функций OrderGetInteger() и HistoryOrderGetInteger()
Идентификатор |
Описание |
Тип |
---|---|---|
ORDER_TICKET |
Тикет ордера. Уникальное число, которое присваивается каждому ордеру |
long |
ORDER_TIME_SETUP |
Время постановки ордера |
datetime |
ORDER_TYPE |
Тип ордера |
|
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 |
Тип исполнения по остатку |
|
ORDER_TYPE_TIME |
Время жизни ордера |
|
ORDER_MAGIC |
Идентификатор эксперта выставившего ордер (предназначен для того, чтобы каждый эксперт выставлял свой собственный уникальный номер) |
long |
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 |
Ордер в состоянии удаления (удаление из торговой системы) |
При отправке торгового запроса на исполнение в действующий момент времени (time in force) нужно указать цену и требуемый объем покупки/продажи. При этом необходимо учитывать, что на финансовых рынках нет гарантии того, что в данный момент времени по данному финансовому инструменту доступен весь запрашиваемый объем по желаемой цене. Поэтому проведение торговых операций в реальном времени регулируется с помощью режимов исполнения по цене и объему. Режимы, или по-другому политики исполнения, определяют правила для случаев, когда изменилась цена или запрашиваемый объем нельзя выполнить полностью в текущий момент времени.
Режим исполнения по цене – его можно получить из свойства символа SYMBOL_TRADE_EXEMODE, которое содержит комбинацию флагов из перечисления ENUM_SYMBOL_TRADE_EXECUTION.
Режим исполнения |
Описание |
Значение в ENUM_SYMBOL_TRADE_EXECUTION |
---|---|---|
Режим исполнения
(Request Execution) |
Исполнение рыночного ордера по цене, предварительно полученной от брокера.
Перед отправкой рыночного ордера у брокера запрашиваются цены его исполнения. После их получения выполнение ордера по данной цене можно либо подтвердить, либо отклонить. |
SYMBOL_TRADE_EXECUTION_REQUEST |
Немедленное исполнение
(Instant Execution) |
Немедленное исполнение рыночного ордера по указанной цене.
При отправке торгового запроса на исполнение платформа автоматически подставляет в ордер текущие цены.
|
SYMBOL_TRADE_EXECUTION_INSTANT |
Исполнение по рынку
(Market Execution) |
Решение о цене исполнения принимает брокер без дополнительного согласования с трейдером.
Отправка рыночного ордера в таком режиме подразумевает досрочное согласие с ценой, по которой он будет выполнен. |
SYMBOL_TRADE_EXECUTION_MARKET |
Биржевое исполнение
(Exchange Execution) |
Торговые операции совершаются по ценам текущих рыночных предложений. |
SYMBOL_TRADE_EXECUTION_EXCHANGE |
Политика заполнения объема – указывается в свойстве ордера ORDER_TYPE_FILLING и может содержать только значения из перечисления ENUM_ORDER_TYPE_FILLING
Политика исполнения |
Описание |
Значение в ENUM_ORDER_TYPE_FILLING |
---|---|---|
Все/Ничего (Fill or Kill) |
Ордер может быть исполнен исключительно в указанном объеме.
Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен.
Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.
Возможность использования FOK-ордеров определяется на торговом сервере. |
ORDER_FILLING_FOK |
Все/Частично (Immediate or Cancel) |
Трейдер соглашается совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере.
В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен.
Возможность использования IOC-ордеров определяется на торговом сервере.
|
ORDER_FILLING_IOC |
Пассивная (Book or Cancel) |
BoC-ордер предполагает, что ордер может быть только выставлен в стакан цен и не может быть немедленно исполнен. Если ордер может быть исполнен немедленно при выставлении, то он снимается.
Фактически, политика BOC гарантирует, что цена выставленного ордера будет хуже текущего рынка. BoC-ордеры используются для реализации пассивной торговли, чтобы ордер гарантированно не был исполнен сразу при выставлении и не повлиял на текущую ликвидность.
Поддерживается только для лимитных и стоп-лимитных ордеров (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT). |
ORDER_FILLING_BOC |
Вернуть (Return) |
В случае частичного исполнения ордер с остаточным объемом не снимается, а продолжает действовать.
Return-ордеры не разрешены в режиме исполнения Market Execution (исполнение ордеров по рынку — SYMBOL_TRADE_EXECUTION_MARKET). |
ORDER_FILLING_RETURN |
При отправке торгового запроса функцией OrderSend() нужную политику исполнения по объему можно задать в поле type_filling в специальной структуре MqlTradeRequest, допустимы значения из перечисления ENUM_ORDER_TYPE_FILLING. Для получения значения этого свойства в конкретном действующем/отработавшем ордере используйте функцию OrderGetInteger() или HistoryOrderGetInteger() с модификатором ORDER_TYPE_FILLING.
Перед отправкой ордера с исполнением в текущий момент времени, для правильного выставления значения ORDER_TYPE_FILLING (тип исполнения по объему), для каждого финансового инструмента с помощью функции SymbolInfoInteger() можно получить значение свойства SYMBOL_FILLING_MODE, которое показывает разрешенные для этого символа типы заполнения по объему в виде комбинации флагов. При этом нужно отметить, что тип заливки ORDER_FILLING_RETURN разрешен всегда, кроме режима "Исполнение по рынку" (SYMBOL_TRADE_EXECUTION_MARKET).
Применение типов заливки в зависимости от режима исполнения можно представить в виде таблицы:
Режим исполнения\Политика заполнения |
Все/Ничего (FOK ORDER_FILLING_FOK) |
Все/Частично (IOC ORDER_FILLING_IOC) |
Вернуть (Return ORDER_FILLING_RETURN) |
---|---|---|---|
Немедленное исполнение
(SYMBOL_TRADE_EXECUTION_INSTANT) |
+ (независимо от настройки символа) |
+ (независимо от настройки символа) |
+ (всегда) |
Исполнения по запросу
SYMBOL_TRADE_EXECUTION_REQUEST |
+ (независимо от настройки символа)
|
+ (независимо от настройки символа) |
+ (всегда) |
Исполнение по рынку
SYMBOL_TRADE_EXECUTION_MARKET |
+ (задается в настройках символа) |
+ (задается в настройках символа) |
- (запрещено при любых настройках символа) |
Биржевое исполнение
SYMBOL_TRADE_EXECUTION_EXCHANGE |
+ (задается в настройках символа) |
+ (задается в настройках символа) |
+ (всегда) |
Для отложенных ордеров независимо от режима исполнения (SYMBOL_TRADE_EXEMODE) необходимо использовать тип заливки 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 |