Сделки. Обезличенная лента сделок. Описание класса Trade. OsEngine.

Сделки. Обезличенная лента сделок. Описание класса Trade. OsEngine.

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

Информация о трейдах публикуется в ленте обезличенных сделок, например, в торговом интерфейсе биржи бинанс она выглядит так:

Рис. 1. Лента сделок на бирже binance.

На снимке каждая строка отображает данные по одной сделке.

Через API данные по сделкам в большинстве случаев можно получать двумя способами. Первый – запросить слепок ленты сделок. Как правило, такой запрос необходимо конфигурировать временным отрезком, имеющим время начала и конца запрашиваемого интервала. В этом случае мы получаем массив сделок, совершенных в указанный промежуток времени. Второй способ - подписаться на поток рассылки сделок в реальном времени. Каждое сообщение из такого потока описывает одну сделку.

В OsEngine за описание данной сущности отвечает класс Trade, расположенный по пути OsEngine\project\OsEngine\Entity\Trade.cs

Рис. 2. Класс Trade в структуре проекта.

Рассмотрим подробно состояние и поведение объектов класса Trade.cs в порядке их определения.

SecurityNameCode  общедоступное свойство строкового типа, содержит наименование актива, по которому прошла эта сделка.

Id  публичное поле строкового типа, уникальный идентификатор в рамках конкретного инструмента, устанавливаемый биржей.  

Volume  публичное поле типа decimal. Хранит объем операции.

Price  публичное поле типа decimal. Содержит цену инструмента, по которой прошла сделка.

Time  публичное поле типа DateTime. Указывает дату и время совершения торговой сделки.

MicroSecond  публичное поле типа int. Хранит количество микросекунд, прошедших с момента времени, указанного в поле Time. Важно помнить, что не все биржи предоставляют эту информацию. Поэтому в случае отсутствия такой информации на бирже, в поле будет храниться 0. 

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

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

Следует заметить, что в момент взаимодействия покупателя с продавцом генерируются сразу две сделки, по одной для каждой из сторон. Но в ленту сделок попадет только одна из них, та, которая принадлежит инициатору сделки. Инициатор это тот, кто создает встречное предложение, кидает ордер «по рынку». Рассмотрим на примере: в книге заявок уже находится чей-то ордер на продажу по определенной цене, и вы выставляете ордер на покупку по цене продавца или выше, вы будете инициатором сделки, так как ваши действия приведут к совершению сделки. Соответственно в такой сделке значение поля Side будет равно Side.Buy.

Bid  публичное поле типа decimal. Хранит значение цены лучшего уровня на покупку из стакана заявок на момент создания объекта класса Trade.

Ask  публичное поле типа decimal. Хранит значение цены лучшего уровня на продажу из стакана заявок на момент создания объекта класса Trade.

BidsVolume  публичное поле типа decimal. Хранит значение суммарного объема всех уровней на покупку в стакане заявок на момент создания объекта класса Trade.

AsksVolume  публичное поле типа decimal. Хранит значение суммарного объема всех уровней на продажу в стакане заявок на момент создания объекта класса Trade.

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

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

GetSideIqFeed – приватный метод, определяет сторону сделки для трейдов, полученных из IqFeed.

14:43
503
FAQ

Комментарии

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