Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про Ордера (Заявки). Мы их создаём в момент, когда хотим открыть позицию:
В одной из прошлых статей мы говорили о сделках, но сама по себе сделка не может существовать без такого понятия, как заявка.
Ордер (биржевая заявка, приказ) – это поручение, направляемое на биржу, которое выражает намерение трейдера совершить торговую операцию купли или продажи финансового инструмента. Существует несколько разновидностей ордеров, отличающихся типом заказа, особенностью исполнения и дополнительными ограничениями. По типу исполнения выделяют рыночные, лимитные и условные заявки.
Рыночный ордер исполняется сразу после поступления на биржу при наличии контрагентов в виде лимитных заявок. Такой ордер не требует установки цены. Итоговая цена исполнения будет рассчитана на основании средней цены сделок, которые появятся в результате удовлетворения заявки.
Лимитный ордер – это заявка на совершение сделки при достижении ценой определенного значения. Данный тип приказа требует указание желаемой цены. В отличие от рыночных заявок, лимитки лишены проскальзывания как такового и имеют пониженную комиссию.
Условный ордер подразумевает активацию заказа при возникновении заранее определенных условий. Например, к таким заявкам относится стоп ордер – приказ, высылаемый в ядро торговой системы после достижения ценой определенного значения.
OsEngine как сам может создавать ордера, так и принимать их с биржи. В большинстве случаев заявки преобразуются в класс Order.
На ГитХаб этот класс находится здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/Order.cs
Внутри проекта это здесь:
Сам же класс, если Вы его откроете, выглядит следующим образом:
NumberUser – публичное поле типа Int. Задается программой, хранит уникальный в рамках терминала идентификатор объекта.
NumberMarket – публичное строковое поле. Хранит уникальный идентификатор заявки, предоставляемый биржей.
SecurityNameCode – общедоступное строковое поле. Содержит наименование инструмента, по которому была совершена транзакция.
SecurityClassCode – общедоступное строковое поле. Определяет код класса инструмента, по которому была совершена транзакция.
PortfolioNumber – публичное строковое поле. Хранит номер счета, к которому принадлежит заявка.
Side – публичное поле типа Side. Указывает направление заявки. Значения перечисления Side:
Price – публичное поле типа decimal. Содержит значение цены, задаваемое в момент создания заявки.
PriceReal – публичное свойство типа decimal. Возвращает фактическую цену исполнения заявки.
Volume – публичное поле типа decimal. Хранит значение объема, который изначально предполагалось получить ордером.
VolumeExecute – публичное свойство типа decimal. Возвращает объем, который уже был исполнен. Рассчитывается на основании сделок, принадлежащих этой заявке.
MyTrades – публичное свойство типа MyTrade. Хранит все сделки, принадлежащие этому ордеру.
State – публичное свойство типа OrderStateType. Определяет текущее состояние объекта. Может иметь следующие значения:
TypeOrder — публичное поле типа OrderPriceType. Определяет тип ордера:
PositionConditionType – публичное поле типа OrderPositionConditionType. Определяет предназначение ордера:
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 – общедоступный метод, принимает строку, содержащую данные по всем полям, парсит ее и инициализирует состояние объекта.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php