Вышел второй релиз Flox. FLOX – это фреймворк, предоставляющий инструментарий для построения информационно-торговых систем с фокусом на пропускную способность и низкие задержки.
В этом обновлении движок получил новые абстракции, включая универсальный интерфейс для WebSocket-клиентов, асинхронный HTTP-транспорт и систему отслеживания ордеров. Интерфейс трекинга исполнения расширен и теперь охватывает весь жизненный цикл ордера, включая отправку, подтверждение, исполнение, отмену и отклонение. Также добавлена поддержка типов инструментов (спот, фьючерсы, инверсные фьючерсы, опционы), настройка CPU affinity и новая конфигурируемая система логирования.
В рамках релиза проводился эксперимент по переходу с виртуальных интерфейсов на модель с концептами и трейтовыми обёртками на базе Ref и пользовательских vtable. Результаты бенчмарков показали, что компилятор лучше оптимизирует virtual-вызовы, поэтому эксперимент остался экспериментом. Подробности описаны в статьях:
Полиморфизм без virtual в C++: концепты, трейты и Ref (RU)
Polymorphism without virtual in C++: Concepts, Traits, and Ref (EN)
Параллельно вышел первый релиз flox-connectors
- отдельного модуля, построенного поверх FLOX.
В этот модуль будут входить коннекторы к различным биржам и провайдерам данных, построенные на общих принципах с переиспользованием компонентной базы.
В первый релиз входит коннектор к бирже Bybit с поддержкой получения рыночных данных и состояния пользовательских ордеров и позиций через WebSocket и исполнитель ордеров через REST. Архитектура коннектора полностью совместима с ядром Flox, что позволяет использовать его в пользовательских стратегиях и сценариях агрегации данных.
Фокус следующего релиза будет на реализации кастомного бинарного формата хранения данных (как тиковых, так и свечных), подготовке к реализации инструментов бэктеста и расширению списка поддерживаемых бирж.
>>> FLOX