CloseToAlgoTrading
CloseToAlgoTrading личный блог
21 февраля 2021, 21:46

Пример использования IB API - C++ - Flask - Reinforcement learning agent

Все привет, 

Если кто помнит, я когда то рассматривал структуру алгоритмисческого окружения, идея состояла в том, что не следуют все связывать в один монолит.
Структура и элементы автоматической торговой сиситемы!
Дизайн доморощенного алгоритмического окружения.

Было и несколько тем про применение обучения с подкреплением и моделей глубокого обучения, а так же как деплоить модели используя TensorFlow Extended (TFX)

Эксперимент: торговая система на базе глубокого обучения от начала до реальных торгов. Часть III. Начинаем работу с TFX

Пришло время собрать все это вместе, и показать, что все эти части могут работать совместно.

Пример использования IB API - C++ - Flask - Reinforcement learning agent

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

И так как на сегодняшний день, python наверное самый популярный язык для всякого рода эксперементов с AI, для деплоя моделей я взял Flask. Многие наверняка знают что это такое. Flask является микрофреймворком для создания вебсайтов на языке Python. Однако нам совершенно не нужен веб сайт, но с помощью этого фреймворка мы можем легко запустить веб приложение, с которым можно будет общаться используя HTTP запросы. 
Собственно для наших целей нам достаточно одного метода, который будет вызывать нашу модель. Данные же можно довольно легко передавать в JSON формате, что очень удобно. Я не использовал тут TFX, так как чувствую, что используя Flask все получается как то проще… :) ибо гугловские доктора наук все усложняют :)).

Стоит конечно заметить, что данное решение не самое быстрое, запросы через rest api врядли подойдут для тех кто бореться за микросекунды, однако я уверен, что для большинства это вполне себе практичное решение. 


На картинке так же видно, что мы полключаемся к Interactive brokers gateway через приложение QtIbTrade (на саомом деле IbTradeQt), я про него упоминал ранее:

Наброски торговой платформы использующей IB C++ API.

С тех далеких пор разработка так и не продвинулась :)), однако я думаю возобновить работу над этим проектом. 

Что ж, в данном примере, приложение на c++ реализует модель исполнения заявок, и совершенно отделено от модели принятия решений, что довольно удобно. 

Расширив же данный подход, мы можешь иметь довольно гибкую среду, где можно применять множество моделей, подключая или отключая их прямо на лету, так же мы можем непосредственно реализовать все действия непосредственно используя c++, как одтельный модуль, если вдруг нам понадобиться скорость исполнения.

Что думаете о такой реализации?


Ну и как же без моего телеграм канала :))… шучу… Видео с более детальным техническим описанием:




Код как обычно найдете в описании к видео.


12 Комментариев
  • Виктор Бавин
    22 февраля 2021, 08:11
    сделайте видео как квик наш русский подключить. Просто интресно попробывать как он
  • Roman Ivanov
    22 февраля 2021, 10:29
    У многокомплнентной структуры есть достоинства, но то явно не тот случай. Тут лучше монолит, а внутри него разделять и властвовать.
    Меньше фигур — легче играть говорил Наполеон.
  • Roman Ivanov
    22 февраля 2021, 20:02
    Похоже на микросервисную ахитектуру. Она полезна кода большой проект, много людей каждый занимается своей частью, возможность масштабирования и прочее. Преимуществ много.
    Но цена этому низкая производителньость и сложнось. Придется больше времени тартить на то чтобы заставить каждый компонент работать как надо и чтобы они были правильно связаны. + невозможны будут некоторые алгоритмы который предполагают слишком частые запросы/ответы между двумя компонентами.

  • tranquility
    24 февраля 2021, 00:32
    А как это апи работает? Оно напрямую к серверу подключается, или сначала к TWS на локальном компе(как, собственно, в случае quik/lua)?
    • tranquility
      24 февраля 2021, 22:11
      CloseToAlgoTrading, я так глубоко Ваш код не копал, но счиаю, что эта мысль явно хорошая))

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн