Заявка, заказ. Описание класса Order. OsEngine.

Заявка, заказ. Описание класса Order. OsEngine.

В одной из прошлых статей мы говорили о сделках, но сама по себе сделка не может существовать без такого понятия, как заявка.

Ордер (биржевая заявка, приказ) – это поручение, направляемое на биржу, которое выражает намерение трейдера совершить торговую операцию купли или продажи финансового инструмента. Существует несколько разновидностей ордеров, отличающихся типом заказа, особенностью исполнения и дополнительными ограничениями. По типу исполнения выделяют рыночные, лимитные и условные заявки.

Рыночный ордер исполняется сразу после поступления на биржу при наличии контрагентов в виде лимитных заявок. Такой ордер не требует установки цены. Итоговая цена исполнения будет рассчитана на основании средней цены сделок, которые появятся в результате удовлетворения заявки. Рыночные приказы имеют два существенных недостатка. Первый и самый существенный заключается в проскальзывании. Ядро биржи будет исполнять такой ордер о заявки контрагентов до тех пор, пока не удовлетворит весь запрашиваемый объем. Если для ликвидных активов это не является проблемой, то на всяких шиткоинах издержки могут вырасти существенно. Второй недостаток в том, что вы забираете ликвидность с рынка. Такую сторону сделок называют тейкерами и как правило на большинстве бирж с них берут повышенную комиссию.

Лимитный ордер – это заявка на совершение сделки при достижении ценой определенного значения. Данный тип приказа требует указание желаемой цены. Инициаторов данного типа приказов называют мейкерами. В отличии от рыночных заявок, лимитки лишены проскальзывания как такового и имеют пониженную комиссию. Более того, некоторые биржи платят мейкерам часть комиссии контрагентов за использование лимитных заявок, что в свою очередь положительно сказывается на издержках.

Условная заявка подразумевает активацию заказа при возникновении заранее определенных условий. Например, к таким заявкам относится стоп ордер – приказ, высылаемый в ядро торговой системы после достижения ценой определенного значения. Так же к условным заявкам относятся связанные ордера, например, случай со стоп-лоссом и тейк-профитом, когда один из них исполняется, второй немедленно отменяется.

За моделирование заявок в OsEngine отвечает класс Order, путь к файлу: OsEngine\project\OsEngine\Entity\Order.cs

Рис. 1. Класс Order в структуре проекта.

Рассмотрим подробно все члены класса Order.cs.

NumberUser – публичное поле типа Int. Задается программой, хранит уникальный в рамках терминала идентификатор объекта.

NumberMarket – публичное строковое поле. Хранит уникальный идентификатор заявки, предоставляемый биржей.

SecurityNameCode – общедоступное строковое поле. Содержит наименование инструмента, по которому была совершена транзакция.

SecurityClassCode – общедоступное строковое поле. Определяет код класса инструмента, по которому была совершена транзакция.

PortfolioNumber – публичное строковое поле. Хранит номер счета, к которому принадлежит заявка.

Side – публичное поле типа Side. Указывает направление заявки. Значения перечисления Side:

  1. None - используется при создании объектов, когда направление заявки не определено.
  2. Buy - покупка.
  3. Sell - продажа.

Price – публичное поле типа decimal. Содержит значение цены, задаваемое в момент создания заявки.

PriceReal – публичное свойство типа decimal. Возвращает фактическую цену исполнения заявки.

Volume – публичное поле типа decimal. Хранит значение объема, который изначально предполагалось получить ордером.

VolumeExecute – публичное свойство типа decimal. Возвращает объем, который уже был исполнен. Рассчитывается на основании сделок, принадлежащих этой заявке.

MyTrades – публичное свойство типа MyTrade. Хранит все сделки, принадлежащие этому ордеру.

State – публичное свойство типа OrderStateType. Определяет текущее состояние объекта. Может иметь следующие значения:

  1. None - используется при создании объектов, когда состояние заявки не определено.
  2. Active - ордер принят биржей и выставлен в книгу заявок.
  3. Pending - заявка принята биржей и ожидает регистрации в системе.
  4. Done - заявка полностью исполнена.
  5. Partial - заявка исполнена частично.
  6. Fall - ордер отвергнут торговой системой по причине наличия не релевантных данных в полях объекта или в следствии внешних факторов, таких как неторговое время биржи.
  7. Cancel - заявка была отменена пользователем или торговой системой.

TypeOrder - публичное поле типа OrderPriceType. Определяет тип ордера:

  1. Limit - выставить ордер по определенной цене.
  2. Market - исполнить ордер по текущим ценам.
  3. Iceberg - выставить серию заявок с сокрытием части объема.

PositionConditionType  публичное поле типа OrderPositionConditionType. Определяет предназначение ордера:

  1. None - не определено.
  2. Open - ордер используется для открытия позиции.
  3. Close - ордер используется для закрытия позиции.

Comment  общедоступное строковое поле. Может содержать вспомогательную информацию.

TimeCallBack  публичное поле типа DateTime. Хранит время первого ответа биржи на запрос.

TimeCancel  публичное поле типа DateTime. Хранит время отмены заказа.

TimeDone  публичное поле типа DateTime. Хранит время исполнения ордера.

TimeCreate  публичное поле типа DateTime. Время создания ордера в программе.

TimeRoundTrip – общедоступное свойство типа TimeSpan. Содержит отрезок, который понадобился для выставления заявки.

TimeExecuteFirstTrade  общедоступное свойство типа DateTime. Возвращает время первой сделки по ордеру. В случае отсутствия сделок возвращает время создания заявки.

LifeTime  общедоступное поле типа TimeSpan. Временной отрезок, по прошествии которого ордер будет отозван программой, если к тому моменту не исполнится.

IsStopOrProfit – публичное поле типа bool. Флаг, указывающий, является ли данный ордер связанной заявкой стоп-лосс или тейк-профит.

ServerType – публичное поле типа ServerType. Указывает на тип биржи, для которой предназначен этот ордер.

SetTrade – принимает сделку и проверяет ее принадлежность текущему ордеру. В случае положительного результата, добавляет в список и при необходимости изменяет состояние заявки.

GetMidlePrice – рассчитывает среднюю цену исполнения ордера на основании имеющихся сделок.

GetLastTradeTime – возвращает время последней сделки.

TradesIsComing  общедоступное свойство типа bool. Указывает на то, были ли сделки по ордеру.

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

SetOrderFromString  общедоступный метод, принимает строку, содержащую данные по всем полям, парсит ее и инициализирует состояние объекта.

15:46
426
FAQ

Комментарии

Нет комментариев. Ваш будет первым!