- Главное событие экспертов: OnTick
- Основные принципы и понятия: ордер, сделка, позиция
- Типы торговых операций
- Типы ордеров
- Режимы исполнения ордеров по цене и объемам
- Сроки действия отложенных ордеров
- Расчет залога для будущего ордера: OrderCalcMargin
- Оценка прибыли торговой операции: OrderCalcProfit
- Структура торгового запроса MqlTradeRequest
- Структура проверки запроса MqlTradeCheckResult
- Проверка корректности запроса: OrderCheck
- Результат отправки запроса: структура MqlTradeResult
- Отправка торгового запроса: OrderSend и OrderSendAsync
- Совершение покупки или продажи
- Модификация уровней Stop Loss и/или Take Profit позиции
- Трейлинг стоп
- Полное и частичное закрытие позиции
- Полное и частичное закрытие встречных позиций (хедж)
- Установка отложенного ордера
- Модификация отложенного ордера
- Удаление отложенного ордера
- Получение списка действующих ордеров
- Свойства ордеров (действующих и в истории)
- Функции для чтения свойств действующих ордеров
- Отбор ордеров по свойствам
- Получение списка позиций
- Свойства позиций
- Функции для чтения свойств позиций
- Свойства сделок
- Выборка ордеров и сделок из истории
- Функции для чтения свойств ордеров из истории
- Функции для чтения свойств сделок из истории
- Типы торговых транзакций
- Событие OnTradeTransaction
- Синхронные и асинхронные запросы
- Событие OnTrade
- Контроль за изменениями торгового окружения
- Особенности создания мультисимвольных экспертов
- Ограничения и преимущества экспертов
- Создание заготовки эксперта в Мастере MQL
Свойства позиций
Все свойства позиций делятся на 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 |
Идентификатор позиции во внешней системе (на бирже) |
После знакомства с перечнем свойств позиций мы готовы рассмотреть функции для чтения этих свойств.