Сегодня поговорим про ленту сделок.
В Вашем вёб-терминале Вы видите ленту сделок где-то здесь. Обычно это таблица:
1. Что такое Лента сделок и трейд?
Обезличенная сделка или трейд – все эти термины описывают факт взаимодействия между покупателем и продавцом (через сведение ордеров), результатом которого является атомарная операция передачи ценных бумаг из одних рук в другие. Записи об этом мы и видим в таблице обезличенных сделок.
Как обезличенная сделка появляется:
- Клиент биржи выставил ордер на продажу 100 акций сбербанка по цене 200 рублей.
- Затем другой клиент биржи выставил ордер на покупку 100 акций сбербанка по цене 200 рублей.
- Ядро биржи увидело, что ордера можно «свести» / «сматчить» и удовлетворила их оба. У одного клиента списалось 100 акций у другого появилось 100 акций.
- В этот момент ядро сгенерировало в том числе и запись в ленту сделок по сбербанку. В данном случае это был один трейд по цене 200 рублей объёмом в 100 акций сбербанка, активная сторона – покупатель.
В терминале Astras от АЛОР лента сделок Сбербанка выглядит так:
2. Класс Trade. Как выглядит лента сделок в OsEngine?
Каждая сделка в данной таблице при попадании в OsEngine преобразуется в класс Trade.
В проекте OsEngine на ГитХаб этот класс находится здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/Trade.cs
Внутри проекта это здесь:
Сам же класс, если Вы его откроете, выглядит следующим образом:
Рассмотрим подробно:
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, который входит в позицию по наступлении определённого времени, которое он смотрит по входящей ленте сделок:
- Расположение примера в проекте.
- А здесь мы подписываемся на событие обновление ленты сделок.
- Обработчик события обновления ленты сделок. Когда в таблице ленты сделок по инструменту на бирже появляется новая запись, мы получаем новый трейд в это событие и можем как-то его анализировать.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка 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