LINUX.ORG.RU

Избранные сообщения alexavin

Делаю фреймворк для алготрейдинга, ищу единомышленников (Python/Rust)

Форум — Development

Привет линоксоводам и алготрейдерам. Видел несколько тем на этом форуме по алготрейдингу, но они уже в архиве, написать туда нельзя. В личку авторам написать тоже нельзя. А мне очень нужно с ними пообщаться. Изначально меня привлекла вот эта тема: Открываю исходники платформы разработки торговых алгоритмов В ней засветились еще несколько трейдеров, и ссылки на другие темы. Надеюсь кто-нибудь из них сюда заглянет.

Я делаю библиотеку для алготрейдинга. Которая (в мечтах) должна дорасти вот прямо таки до фреймворка. Стек кросплатформенный (Python, Rust, eframe/egui), но сам веду разработку под линуксом, и на других ОС не тестировалась, так что проект линуксовый, но с возможностью запуска на других ОС, если надо. Идея такая:

== Суть и мотивация

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

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

== Модули и возможности

  • analyse: инструменты статистического анализа исторических данных
  • connect: коннекторы, пока доступно подключение только к Тинькофф брокеру (Т-банк)
  • core: структуры для удобной работы с данными на «трейдерском языке»: график, таймфрейм, ордер…
  • data: загрузка и обновление исторических данных. Пока только с Московской биржи
  • strategy - база для создания своих стратегий
  • tester: простой, но очень быстрый бэк-тестер
  • trader: модуль запуска стратегий в боевом режиме
  • terminal: GUI терминал для ручной торговли
  • report: построение отчетов
  • informer: уведомления в telegram
  • gui: утилиты для просмотра результатов тестов и др.

== Что уже сделано и что планируется

data - единственный модуль в системе написанный на Python, остальное на Rust. Здесь cli утилита для загрузки рыночных данных с мос.биржи, пример работы: «avin-data download -i MOEX_SHARE_SBER». Это обертка над moexalgo, с более простым api и автоматически раскладывает данные по папкам в формате parquet. Раньше использовал postgres но это медленно.. А система целится в реал-тайм работу с тиками и стаканами, что питону не по зубам. В планах - другие источники данных кроме мосбиржи, разные форматы сохранения данных (csv, postgres - опционально, хотя не вижу в этом смысла, parquet рулит).

core - тут все уже довольно стабильно, и многое даже с документацией и док-тестами на docs.rs. Тут общие структуры которые используются всеми остальными модулями. Бар, график, таймфрейм, брокер, аккаунт, актив, футпринт (кластерные графики). Тут дальше только улучшать документацию, делать еще более удобное api. Оно сделано в духе Pine от TradingView, ну насколько это возможно на Rust…

strategy - базовый «класс» для стратегий, наследуемся и пишем свою логику. Ну только не класс а trait, написал класс и наследуемся чтобы людям не знакомым с Rust тоже было понятно. Стратегия принимает биржевые события (новый тик, бар, ордер исполнен) и отправляет экшены (выставить ордер, отменить ордер…).

tester - ну базово работает. Причем весьма быстро. Прогон данных 1 года на минутках занимает 10 секунд. Синхронка. В gui результаты на графике показывает, итоговую табличку строит. Но тут еще работы на пятилетку. Строить кривую капитала, считать всякие модные коэффициенты типо Сортино, выдавать красивые отчетики с диаграммами.

trader - опять же базово работает, к брокеру подключается, загружает стратегию, ордера отправляет и тп. Асинхронка.

terminal - По задумке это кастомный терминал с возможностью добавления своих виджетов со своей аналитикой. То есть нечто большее чем просто индикаторы. А что нибудь расчитанное на периоде за годы, сохраненное и загруженное, а не в реалтайме считающееся, хотя можно и в реал-тайме. Все можно, по задумке. На практике там пара моих виджетов со статистикой по трендам и соответственно расчеты вероятностей текущей картины на графике. Я не знаю как правильно сделать плагины. По идее тут должны быть бинарные плагины которые пользователи пишут для себя или для сообщества. А в библиотеке должна быть база, ну как NeoVim или VSCode, только терминал. Не знаю пока как это сделать, но с годами разберусь.

analyse - там пока только cumulative distribution function. Добавлю что-то еще, но по задумке это тоже раздел для плагинов пользователей.

report - не начинал еще. Тут будут отчеты о торговле в боевом режиме в разрезе по стратегиями, дням, неделям, месяцам, и так чтобы красиво, чтобы приятно было рассматривать, со всякими там круговыми диаграммами.

informer - тоже не начинал.

Вообще планов намного больше чем тут указано, но для поста это слишком длинно. Это уже в личку с заинтересованными.

== Чего хочу

Ищу единомышленников, программистов, трейдеров, математиков, вместе дорабатывать систему и зарабатывать на бирже. Круг по интересам для обмена опытом, переопыления идеями и возможно постепенно формирования узкого круга, команды трейдеров, которые вместе работают над стратегиями объединяя свои компетенции и делят профит.

== Репозитарий проекта

https://github.com/arsvincere/avin

== Зачатки документации

https://docs.rs/avin/latest/avin/

 , ,

alexavin
()

Открываю исходники платформы разработки торговых алгоритмов

Форум — Talks

День добрый сообществу.

Я занимаюсь автоматизацией торговли и аналитикой финансового рынка (роботостроительство/алготрейдинг) и планирую открыть часть своего наработанного инструментария для совместной разработки и обмена опытом в технических вопросах. Больше всего меня интересует имеются ли подобные специалисты на ЛОРе, интересует ли кого-либо подобное сотрудничество.

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

Поэтому для себя я создал цепочку проектов для разработки, тестирования, оптимизации и использования торговых систем. В данный момент проект берет котировки у швейцарского банка и торговой площадки Dukascopy. Качество котировок изумительное у них, скажу я вам. Все честно, открыто и качественно. Далее эти котировки попадают в БД под управлением postgreSQL. Сразу нарезаются на всяческие TF, графики Renko, хранятся в чистом виде (тики), есть поддержка гибридных TF (например S441 = 441 second), а так же прочая экзотика. Те кто серьезно занимается роботостроительством поймут зачем все это. Так же, систему очень легко расширить добавив новые правила формирования данных, например таких как квантовые графики, скоростные графики и прочее.

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

Простейший пример торгового алгоритма - это класс, наследующий все необходимые базовые примочки у родителя пустого торгового алгоритма. Класс имеет инициализационный конструктор, а так же ряд методов аля newTick(double bid, double ask, long time), newBar(Bar previous), newEvent(Event e)... У торгового ядра есть легко расширяемый ряд примочек. Существующие примочки: легкое и гибкое извелечение всяческой информации о исторических ордерах (реальных с торгового сервера, демо-ордеров при тестировании, вирутальных ордеров), поддержка библиотеки тех. анализа TA-LIB, построители графиков, анализаторы отчетов (мат. ожидание, профит-фактор, дисперсия, среднеквадратическое отклонение, процентные соотношения, анализ доходности по теории Винса, Вильямса). Поддержка смешанных и скрещенных алгоритмов, возможность подключение бриджов для разнообразных брокеров, дубликаторов сигналов (для цепочки инвестиционных счетов), подключение систем к гибко-конфигурируемым генетическим алгоритмам с целью оптимизации, выполнение полного перебора и прочий инструментарий. Легкое использование трала или другого функционала (например, перевода в безубыток):

Position p = trader.buy(Instruments.EURUSD, ...);
p.addTrailingStop(Indicators.ParabolicSAR(0.001, ...), ...);

Все это я разрабатывал чисто для себя и добился довольно серьезного уровня понимания специфики, технологий и обеспечил существенный финансовый доход. Однако, со временем я начал ощущать, что варюсь в собственном соку хоть и всячески стараюсь читать книги/статьи... Я ищу партнеров с которыми можно будет обмениваться техническими тонкостями, создать какого-то рода узкое сообщество по интересам, а так же выпиливать удобные инструменты для работы. Развиваться, смотреть что люди делают в мире. Буду рад услышать мнение от профессионалов, любителей и совсем новичков подобного рода деятельности.

База: Java + TA-LIB + postgreSQL. Java была выбрана из-за специфики использования автоматизированных торговых систем на разнообразных ОС, а так же из-за интерфейса API торговой площадки Dukascopy.

Еще имеется ряд дополнительных инстурментариев для экзотического анализа и выполнения специфичеких операции: нейросеть распознавания образов, алгоритмы паттерн-матчинга, системы дублирования торговых операций, генераторы отчетов, генераторы детальной информации о точках входа, специфические тестеры точек, анализаторы фундаментальных событий на базе fuzzy logic, календари экономических событий и прикладной софт, анализаторы качества котировок, анализаторы волатильности, визуализаторы работы нейросети/ГА, утилиты для анализа и визуализации ценового стакана. Все не вспомню сейчас, но многое согласен открыть при условии совместного активного развития проектов.

Подготовку исходников и открытие проекта планирую на конец текущего года. Конечно, при условии позитивного резонанса сообщества.

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

ixrws winddos ZenitharChampion Root-msk ns_ramesses Made_in_China inline X10Dead qrck iBliss Kroz capricorn20 trex6

 , , ,

observer
()