Все привет,
Если кто помнит, я когда то рассматривал структуру алгоритмисческого окружения, идея состояла в том, что не следуют все связывать в один монолит.
Структура и элементы автоматической торговой сиситемы!
Дизайн доморощенного алгоритмического окружения.
Было и несколько тем про применение обучения с подкреплением и моделей глубокого обучения, а так же как деплоить модели используя TensorFlow Extended (TFX)
Эксперимент: торговая система на базе глубокого обучения от начала до реальных торгов. Часть III. Начинаем работу с TFX
Пришло время собрать все это вместе, и показать, что все эти части могут работать совместно.
На картинке представлена самая одна из довольно популярных и простых реализаций того, как можно использовать ваши модели глубокого обучения или же стратегию поведения вашего агента, или же любую другую модель принятия решений.
И так как на сегодняшний день, python наверное самый популярный язык для всякого рода эксперементов с AI, для деплоя моделей я взял Flask. Многие наверняка знают что это такое. Flask является микрофреймворком для создания вебсайтов на языке Python. Однако нам совершенно не нужен веб сайт, но с помощью этого фреймворка мы можем легко запустить веб приложение, с которым можно будет общаться используя HTTP запросы.
Собственно для наших целей нам достаточно одного метода, который будет вызывать нашу модель. Данные же можно довольно легко передавать в JSON формате, что очень удобно. Я не использовал тут TFX, так как чувствую, что используя Flask все получается как то проще… :) ибо гугловские доктора наук все усложняют :)).
Стоит конечно заметить, что данное решение не самое быстрое, запросы через rest api врядли подойдут для тех кто бореться за микросекунды, однако я уверен, что для большинства это вполне себе практичное решение.
На картинке так же видно, что мы полключаемся к Interactive brokers gateway через приложение QtIbTrade (на саомом деле IbTradeQt), я про него упоминал ранее:
Наброски торговой платформы использующей IB C++ API.
С тех далеких пор разработка так и не продвинулась :)), однако я думаю возобновить работу над этим проектом.
Что ж, в данном примере, приложение на c++ реализует модель исполнения заявок, и совершенно отделено от модели принятия решений, что довольно удобно.
Расширив же данный подход, мы можешь иметь довольно гибкую среду, где можно применять множество моделей, подключая или отключая их прямо на лету, так же мы можем непосредственно реализовать все действия непосредственно используя c++, как одтельный модуль, если вдруг нам понадобиться скорость исполнения.
Что думаете о такой реализации?
Ну и как же без моего телеграм канала :))… шучу… Видео с более детальным техническим описанием:
Код как обычно найдете в описании к видео.
Меньше фигур — легче играть говорил Наполеон.
По крайней мере я пришел к этому пониманию :)
Но цена этому низкая производителньость и сложнось. Придется больше времени тартить на то чтобы заставить каждый компонент работать как надо и чтобы они были правильно связаны. + невозможны будут некоторые алгоритмы который предполагают слишком частые запросы/ответы между двумя компонентами.
Вопрос скорее в подходе, скажем если мы берем и пишем стратегию питоне, или луа скрипте, мы загоняем туда обычно все части, проверку на доступность средств, логику исполнения ордеров, анализ данных… и тд.
Я стараюсь идти немного другим путем, разделяя отвественности, что то вроде модели контроля за депозитом, модель принятия решений, модель исполнения… и тд.
В видео я через tws подключался, но обычно через гейтвей. (Дума как и квик / луа, просто квик никогда не видел )
Сама софтина, которая самописная на с++ в теории может работать с кем угодно… Но я был ленив и некоторые структуры данных от ib пролезли в модули для работы с данными… :) надо их почистить…