Поговорим про ленту сделок.
В Вашем вёб-терминале Вы видите ленту сделок где-то здесь, как на картинке выше. Обычно это таблица.
1. Что такое Лента сделок и трейд?
Обезличенная сделка или трейд – все эти термины описывают факт взаимодействия между покупателем и продавцом (через сведение ордеров), результатом которого является атомарная операция передачи ценных бумаг из одних рук в другие. Записи об этом мы и видим в таблице обезличенных сделок.
Как обезличенная сделка появляется:
1. Клиент биржи выставил ордер на продажу 100 акций сбербанка по цене 200 рублей.
2. Затем другой клиент биржи выставил ордер на покупку 100 акций сбербанка по цене 200 рублей.
3. Ядро биржи увидело, что ордера можно «свести» / «сматчить» и удовлетворила их оба. У одного клиента списалось 100 акций у другого появилось 100 акций.
4. В этот момент ядро сгенерировало в том числе и запись в ленту сделок по сбербанку. В данном случае это был один трейд по цене 200 рублей объёмом в 100 акций сбербанка, активная сторона – покупатель.
В терминале Astras от АЛОР лента сделок Сбербанка выглядит так:
2. Класс Trade. Как выглядит лента сделок в OsEngine?
Каждая сделка в данной таблице при попадании в OsEngine преобразуется в класс Trade.
В проекте OsEngine на ГитХаб этот класс находится здесь.
Внутри проекта это здесь:
Сам же класс, если Вы его откроете, выглядит следующим образом:
Рассмотрим подробно:
SecurityNameCode – общедоступное свойство строкового типа содержит наименование актива, по которому прошла эта сделка.
Id – публичное поле строкового типа, уникальный идентификатор в рамках конкретного инструмента, устанавливаемый биржей.
Volume – публичное поле типа decimal хранит объем операции.
Price – публичное поле типа decimal содержит цену инструмента, по которой прошла сделка.
Time – публичное поле типа DateTime указывает дату и время совершения торговой сделки.
MicroSecond – публичное поле типа int хранит количество микросекунд, прошедших с момента времени, указанного в поле Time. Важно помнить, что не все биржи предоставляют эту информацию, поэтому, в случае отсутствия такой информации на бирже, в поле будет храниться 0.
Side – активная сторона сделки. Публичное поле типа Side. Значения перечисления Side:
None - используется при создании объектов, когда направление сделки не определено.
Buy - покупка.
Sell - продажа.
TimeFrameInTester – сервисная информация для тестера. Нужно во время тестирования на разных таймфреймах по одной бумаге.
Bid – публичное поле типа decimal хранит значение цены лучшего уровня на покупку из стакана заявок на момент создания объекта класса Trade.
Ask – публичное поле типа decimal хранит значение цены лучшего уровня на продажу из стакана заявок на момент создания объекта класса Trade.
BidsVolume – публичное поле типа decimal хранит значение суммарного объема всех уровней на покупку в стакане заявок на момент создания объекта класса Trade.
AsksVolume – публичное поле типа decimal хранит значение суммарного объема всех уровней на продажу в стакане заявок на момент создания объекта класса Trade.
GetSaveString – общедоступный метод, не принимающий параметров, возвращает строку, в которую записаны все поля объекта для дальнейшего сохранения в хранилище.
SetTradeFromString – общедоступный метод принимает строку, содержащую данные по всем полям, парсит ее и инициализирует состояние объекта.
GetSideIqFeed – приватный метод определяет сторону сделки для трейдов, полученных из IqFeed.
3. Как можно использовать ленту сделок в роботах на OsEngine?
В базовом источнике BotTabSimple, о котором мы будем много говорить в наших гайдах, есть возможность подписаться на ленту сделок по инструменту и, анализируя её, принимать решения.
Например, в публичной сборке есть пример TimeOfDayBot, который входит в позицию по наступлении определённого времени, которое он смотрит по входящей ленте сделок:
1. Расположение примера в проекте.
2. А здесь мы подписываемся на событие обновление ленты сделок.
3. Обработчик события обновления ленты сделок. Когда в таблице ленты сделок по инструменту на бирже появляется новая запись, мы получаем новый трейд в это событие и можем как-то его анализировать.
Удачных алгоритмов!
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии