- Главное событие экспертов: OnTick
- Основные принципы и понятия: ордер, сделка, позиция
- Типы торговых операций
- Типы ордеров
- Режимы исполнения ордеров по цене и объемам
- Сроки действия отложенных ордеров
- Расчет залога для будущего ордера: OrderCalcMargin
- Оценка прибыли торговой операции: OrderCalcProfit
- Структура торгового запроса MqlTradeRequest
- Структура проверки запроса MqlTradeCheckResult
- Проверка корректности запроса: OrderCheck
- Результат отправки запроса: структура MqlTradeResult
- Отправка торгового запроса: OrderSend и OrderSendAsync
- Совершение покупки или продажи
- Модификация уровней Stop Loss и/или Take Profit позиции
- Трейлинг стоп
- Полное и частичное закрытие позиции
- Полное и частичное закрытие встречных позиций (хедж)
- Установка отложенного ордера
- Модификация отложенного ордера
- Удаление отложенного ордера
- Получение списка действующих ордеров
- Свойства ордеров (действующих и в истории)
- Функции для чтения свойств действующих ордеров
- Отбор ордеров по свойствам
- Получение списка позиций
- Свойства позиций
- Функции для чтения свойств позиций
- Свойства сделок
- Выборка ордеров и сделок из истории
- Функции для чтения свойств ордеров из истории
- Функции для чтения свойств сделок из истории
- Типы торговых транзакций
- Событие OnTradeTransaction
- Синхронные и асинхронные запросы
- Событие OnTrade
- Контроль за изменениями торгового окружения
- Особенности создания мультисимвольных экспертов
- Ограничения и преимущества экспертов
- Создание заготовки эксперта в Мастере MQL
Свойства сделок
Сделка является отражением факта совершения торговой операции на основании ордера.
Один ордер может породить несколько сделок за счет исполнения по частям или встречного закрытия позиций.
Сделки характеризуются свойствами трех базовых типов: целочисленные (и совместимые с ними), вещественные, строковые. Каждое свойство описывается собственной константой в одном из перечислений: ENUM_DEAL_PROPERTY_INTEGER, ENUM_DEAL_PROPERTY_DOUBLE, ENUM_DEAL_PROPERTY_STRING.
Для чтения свойств сделок используются HistoryDealGet-функции. Все они предполагают, что необходимый участок истории был предварительно запрошен с помощью специальных функций выборки ордеров и сделок из истории.
Целочисленные свойства описаны в перечислении ENUM_DEAL_PROPERTY_INTEGER.
Идентификатор |
Описание |
Тип |
---|---|---|
DEAL_TICKET |
Тикет сделки — уникальное число, которое присваивается каждой сделке |
ulong |
DEAL_ORDER |
тикет ордера, на основании которого выполнена сделка |
ulong |
DEAL_TIME |
Время совершения сделки |
datetime |
DEAL_TIME_MSC |
Время совершения сделки в миллисекундах |
ulong |
DEAL_TYPE |
Тип сделки |
ENUM_DEAL_TYPE (см. ниже) |
DEAL_ENTRY |
Направление сделки — вход в рынок, выход из рынка или разворот |
ENUM_DEAL_ENTRY (см. ниже) |
DEAL_MAGIC |
Magic-число для сделки (на базе ORDER_MAGIC) |
ulong |
DEAL_REASON |
Причина или источник проведения сделки |
ENUM_DEAL_REASON (см.ниже) |
DEAL_POSITION_ID |
Идентификатор позиции, в открытии, изменении или закрытии которой участвовала сделка |
ulong |
Возможные типы сделок представляет перечисление ENUM_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_SELL_CANCELED |
Отмененная сделка продажи |
DEAL_DIVIDEND |
Начисление дивиденда |
DEAL_DIVIDEND_FRANKED |
Начисление франкированного дивиденда (освобожденного от уплаты налога) |
DEAL_TAX |
Начисление налога |
Варианты DEAL_TYPE_BUY_CANCELED и DEAL_TYPE_SELL_CANCELED отражают ситуацию, когда ранее совершенная сделка отменяется. В таком случае тип ранее совершенной сделки (DEAL_TYPE_BUY или DEAL_TYPE_SELL) меняется на DEAL_TYPE_BUY_CANCELED или DEAL_TYPE_SELL_CANCELED, а ее прибыль/убыток обнуляется. Ранее полученная прибыль/убыток начисляется/списывается со счета отдельной балансовой операцией.
Сделки различаются по способу изменения позиции. Это может быть простое открытие позиции (вход в рынок) или наращивание объема ранее открытой позиции, закрытие позиции сделкой противоположного направления соответствующим объемом (выход из рынка) или переворот позиции в том случае, когда объем сделки в противоположном направлении перекрывает объем ранее открытой позиции. Последняя операция поддерживается только при неттинговом учете.
Все эти ситуации описаны элементами перечисления ENUM_DEAL_ENTRY.
Идентификатор |
Описание |
---|---|
DEAL_ENTRY_IN |
Вход в рынок |
DEAL_ENTRY_OUT |
Выход из рынка |
DEAL_ENTRY_INOUT |
Разворот |
DEAL_ENTRY_OUT_BY |
Закрытие встречной позицией |
Причины проведения сделки сведены в перечисление ENUM_DEAL_REASON.
Идентификатор |
Описание |
---|---|
DEAL_REASON_CLIENT |
Срабатывание ордера, выставленного из десктопного терминала |
DEAL_REASON_MOBILE |
Срабатывание ордера, выставленного из мобильного приложения |
DEAL_REASON_WEB |
Срабатывание ордера, выставленного из веб-платформы |
DEAL_REASON_EXPERT |
Срабатывания ордера, выставленного советником или скриптом |
DEAL_REASON_SL |
Срабатывание ордера Stop Loss |
DEAL_REASON_TP |
Срабатывание ордера Take Profit |
DEAL_REASON_SO |
Наступление события Stop Out |
DEAL_REASON_ROLLOVER |
Перенос позиции между сутками |
DEAL_REASON_VMARGIN |
Начисление/списание вариационной маржи |
DEAL_REASON_SPLIT |
Сплит (понижение цены) инструмента, по которому имелась позиция |
Свойства вещественного типа представлены перечислением ENUM_DEAL_PROPERTY_DOUBLE.
Идентификатор |
Описание |
---|---|
DEAL_VOLUME |
Объем сделки |
DEAL_PRICE |
Цена сделки |
DEAL_COMMISSION |
Комиссия по сделке |
DEAL_SWAP |
Накопленный своп при закрытии |
DEAL_PROFIT |
Финансовый результат сделки |
DEAL_FEE |
Оплата за проведение сделки, начисляется сразу после совершения сделки |
DEAL_SL |
Уровень Stop Loss |
DEAL_TP |
Уровень Take Profit |
Два последних свойства заполняются по такому принципу. Для сделки входа или разворота берется значение Stop Loss/Take Profit из ордера, которым была открыта или развернута позиция. Для сделки выхода берется значение Stop Loss/Take Profit из позиции на момент её закрытия.
Строковые свойства сделок доступны по константам перечисления ENUM_DEAL_PROPERTY_STRING.
Идентификатор |
Описание |
---|---|
DEAL_SYMBOL |
Имя символа, по которому произведена сделка |
DEAL_COMMENT |
Комментарий к сделке |
DEAL_EXTERNAL_ID |
Идентификатор сделки во внешней торговой системе (на бирже) |
Чтение свойств мы протестируем в разделе о HistoryDealGet-функциях, где будут представлены классы DealMonitor и DealFilter.