Сделка является отражением факта совершения торговой операции на основании ордера.
Один ордер может породить несколько сделок за счет исполнения по частям или встречного закрытия позиций.
Сделки характеризуются свойствами трех базовых типов: целочисленные (и совместимые с ними), вещественные, строковые. Каждое свойство описывается собственной константой в одном из перечислений: 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.