Книга заявок, биржевой стакан. Описание класса MarketDepth. OsEngine.

Книга заявок, биржевой стакан. Описание класса MarketDepth. OsEngine.

Неотъемлемым атрибутом любой торговой площадки является такая сущность, как книга заявок. Абсолютно все сделки после валидации попадают в ядро биржи, в котором специальный алгоритм сводит покупателей с продавцами. У книги заявок есть два сортированных списка. Первый называют бидами (Bids), хранит все лимитные заявки на покупку, лучшим в списке считается ордер с наивысшей ценой. Второй называют асками (Asks). Список хранит все заявки на продажу, в котором лучшей заявкой считается ордер с наименьшей ценой. При наличии нескольких заявок с одинаковой ценой, лучшей из них считается та, которая была получена раньше остальных. На основании книги заявок строится агрегированный стакан котировок, который мы привыкли видеть во всех терминалах и интерфейсах бирж. К примеру, на бинансе он выглядит так:

Рис. 1. Стакан заявок на бирже binance.

Из-за своей формы он и получил название стакан. Его отличие от книги заявок в том, что все ордера с одинаковой ценой группируются в одну строку, а их объемы складываются. 

В OsEngine моделированием этой сущности занимается класс MarketDepth. По сути своей это снимок стакана на определенный момент времени. Класс MarketDepthLevel описывает одну строку из стакана.

Код обоих типов находится в каталоге OsEngine\project\OsEngine\Entity\ в файле MarketDepth.cs.

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

Рассмотрим строение этих классов подробнее.

MarketDepthLevel

Ask – публичное поле типа decimal. Содержит информацию о суммарном количество лотов на продажу по этому уровню.

Bid – публичное поле типа decimal. Содержит информацию о суммарном количество лотов на покупку по этому уровню.

Price – публичное поле типа decimal. Цена текущего уровня.

Id – публичное поле типа long. Уникальный идентификатор ценового уровня.

MarketDepth

Time – публичное поле типа DateTime. Хранит время создания текущего снимка.

Asks  публичное поле перечислимого типа. Содержит список всех уровней на продажу. Лучшая цена по индексу 0.

Bids  публичное поле перечислимого типа. Содержит список всех уровней на покупку. Лучшая цена по индексу 0.

AskSummVolume  общедоступное свойство типа decimal. Предоставляет суммарный объем всех уровней на продажу.

BidSummVolume  общедоступное свойство типа decimal. Предоставляет суммарный объем всех уровней на покупку.

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

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

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

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

16:04
263
FAQ

Комментарии

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