LINUX.ORG.RU

FLOX 0.1.0

 , flox, hft, lowlatency,


1

1

Опубликован первый релиз FLOX.

FLOX это C++-фреймворк (стандарт C++23), предоставляющий компоненты и абстракции для построения событийных торговых систем с высокой пропускной способностью.

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

Архитектура модульная: компоненты связываются через шины данных, реализованные на базе lock-free очередей. Использование динамической памяти сведено к минимуму.

В FLOX уже реализованы две книги заявок (полная и оконная), агрегатор свечей, интерфейсы коннекторов, управления позициями, риском, стратегиями, а также подписочная модель через единую шину данных.

Код покрыт тестами, есть бенчмарки и документация. Включённое демо‑приложение демонстрирует работу ключевых подсистем и может служить шаблоном для разработки собственных стратегий.

Архитектура спроектирована с прицелом на расширяемость: любые модули можно дополнять без изменения ядра.

В планах встроить JS‑движок для быстрого прототипирования и проверки гипотез.

Проект распространяется по лицензии MIT, код полностью открыт.

>>> Подробности на GitHub



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 3)

Добавил «стандарт C++23».

dataman ★★★★★
()

Любопытно, а какие у этого есть проприетарные и свободные аналоги? Чем вообще обычно в HFT пользуются?

zabbal ★★★★★
()
Ответ на: комментарий от zabbal

Я бы тоже хотел узнать насчет аналогов. То что я видел либо не подходит для hft (много аллокаций, синхронная архитектура), либо нерасширяемый монолит на котором ничего не построить. Фирмы, специализированные на алготрейдинге, обычно держат собственные фреймворки

eeiaao
() автор топика
Ответ на: комментарий от eeiaao

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

И там обычное дело приветы из 90х в духе «ты не захочешь это со-портить», разное UB ехало через UB в пирамиде велосипедов подпертых костылями. Типа трех разных реализаций autoptr (буквально autoptr2, autoptr3) разбросанных по кодовой базе, велосипедные же буфера и строки, у которых из пруфов надежности только наглые заявы велосипедистов наскока оно «быстрее stl»(с велосипедными микробенчмарками, меряющими вместо скорости кода разогрев кэша процессора и прочую погоду на Марсе) — ну и да. Примерно все любое быстрее stl засчет примерно всех срезанных углов типа сравнения строк формата только по длине. Другое дело что там где оно рили используется (запись в лог) «скорость» нафиг не упала, т.к. при буферизации не важно с какой скоростью запишется на диск то что уже произошло (не быстрее диска). Но эти мудрецы еще и буферизацию любят отключать, т.к. велосипедят персистентные хранилища через маппинг файлов... но при этом не лезут в дрова файловой системы, пытаясь диктовать ей железную волю на уровне максимум винапи и сисколов. Потом удивляются как внезапно все встает колом на I/O. А «строки» там — это пестня, которая ломается при любом использовании вне частного случая задуманного автором. Чаще всего выигрыш от этих слоптимизаций на уровне погрешности.

slackwarrior ★★★★★
()
Ответ на: комментарий от dataman

В планах встроить JS‑движок

Самописный? :)

Смех смехом, а у меня есть проект по компиляции js в натив через llvm, но пока не в приоритете

А если серьёзно - QuickJS рассматриваю как подходящий вариант, возможно будут альтернативы.

eeiaao
() автор топика
Последнее исправление: eeiaao (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

И там обычное дело приветы из 90х в духе «ты не захочешь это со-портить»

Именно такое и слышал. Собственно основная цель flox это систематизация разработки, а не какие-то частные имплементации. Меня завалили вопросами из разряда «какие биржи поддерживаются». А это просто набор интерфейсов и малая часть строительных блоков…

eeiaao
() автор топика
Ответ на: комментарий от eeiaao

Меня завалили вопросами из разряда «какие биржи поддерживаются». А это просто набор интерфейсов и малая часть строительных блоков…

Тут основной треш и угар — особенные тараканы каждой биржи :) «да, у нас это сообщение тоже используется... но нимношк по-другому». Именно так при едином вроде бы FIX протоколе появляются в кодовой базе отдельные каталоги под каждого клиента.

slackwarrior ★★★★★
()
Ответ на: комментарий от dataman

Ну к этому все приходят:) в мосте для раздачи маркетдаты видел на одном конце SpiderMonkey, а в другое лично вкручивал v8 :) т.к. «конфигурирование» на C++ рано или поздно вызывает вопросы.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от dataman

Lua

На мой взгляд, луа недостаточно популярен и будет осложнять развитие. На js просто больше людей пишет. Но кстати никто не мешает сделать и для луа биндинги. Спасибо за идею

eeiaao
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.