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

Все свойства позиций делятся на 3 группы по типу значений: целочисленные и совместимые с ними, вещественные числа и строки. Для их чтения используются PositionGet-функции, аналогичные OrderGet-функциям. Сами функции мы опишем в следующем разделе, а здесь приведем идентификаторы всех свойств, которые доступны для указания в первом параметре этих функций.

Целочисленные свойства объединены в перечисление ENUM_POSITION_PROPERTY_INTEGER.

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

Описание

Тип

POSITION_TICKET

Тикет позиции

ulong

POSITION_TIME

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

datetime

POSITION_TIME_MSC

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

ulong

POSITION_TIME_UPDATE

Время изменения позиции (объема)

datetime

POSITION_TIME_UPDATE_MSC

Время изменения позиции (объема) в миллисекундах

ulong

POSITION_TYPE

Тип позиции

ENUM_POSITION_TYPE

POSITION_MAGIC

Magic-число для позиции (на основе ORDER_MAGIC)

ulong

POSITION_IDENTIFIER

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

ulong

POSITION_REASON

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

ENUM_POSITION_REASON

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

Если ордер заливается частично, то может одновременно существовать и позиция, и действующий отложенный ордер на оставшийся объем с совпадающими тикетами. Более того, такую позицию можно успеть закрыть, а при следующей заливке остатков отложенного ордера снова появится позиция с тем же тикетом.

В режиме неттинга переворот позиции одной сделкой считается изменением позиции, а не созданием новой, поэтому идентификатор POSITION_IDENTIFIER сохраняется. Новая позиция по символу возможна только после закрытия предыдущей в нулевой объем.

Свойство POSITION_TIME_UPDATE отвечает только на изменение объема (например, в результате частичного закрытия или "доливки"), но не других параметров вроде уровней Stop Loss/Take Profit или начисления свопов.

Типов позиций всего два (ENUM_POSITION_TYPE).

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

Описание

POSITION_TYPE_BUY

Покупка

POSITION_TYPE_SELL

Продажа

Варианты происхождения позиции, то есть способы её открытия, раскрывает перечисление ENUM_POSITION_REASON.

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

Описание

POSITION_REASON_CLIENT

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

POSITION_REASON_MOBILE

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

POSITION_REASON_WEB

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

POSITION_REASON_EXPERT

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

Вещественные свойства собраны в ENUM_POSITION_PROPERTY_DOUBLE.

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

Описание

POSITION_VOLUME

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

POSITION_PRICE_OPEN

Цена позиции

POSITION_SL

Цена Stop Loss

POSITION_TP

Цена Take Profit

POSITION_PRICE_CURRENT

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

POSITION_SWAP

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

POSITION_PROFIT

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

Тип текущей цены соответствует операции закрытия позиции. Например, длинная позиция должна закрываться продажей, и потому для неё в POSITION_PRICE_CURRENT отслеживается цена Bid.

Наконец, для позиций поддерживаются следующие строковые свойства (ENUM_POSITION_PROPERTY_STRING).

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

Описание

POSITION_SYMBOL

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

POSITION_COMMENT

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

POSITION_EXTERNAL_ID

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

После знакомства с перечнем свойств позиций мы готовы рассмотреть функции для чтения этих свойств.