Обращение к ML моделям на Python из MQL5 стратегии.

 

Мне нужно обращаться к моделям на Python - как минимум XGBoost ну и прочие распространенные библиотеки. Только переезжаю в MT5, на предыдущем месте стратегии были на C#, а доступ к моделям был через API на Python, которое и хостило модели, т.е. по API из стратегии шлешь входные данные ну и имя модели, на выходе предикт, условно.


Если считать что схема из MQL5 кода шлю Post запрос к этому же API (в ответ получаю предикт) взять за базовую схему (как я понимаю, с реализацией трудностей быть не должно), то можно ли как-то схему улучшить (читай ускорить). Т.е. вроде есть Python API, т.е. модели, можно связывать с терминалом вроде как-то можно, но стратегии со скриптом на Python, вроде и никак. Python API, вроде, даже к глобальным переменным терминала обращаться не умеет.


Через файлы и аналогичное точно проиграет варианту с API.

 
Replikant_mih:

Мне нужно обращаться к моделям на Python - как минимум XGBoost ну и прочие распространенные библиотеки. Только переезжаю в MT5, на предыдущем месте стратегии были на C#, а доступ к моделям был через API на Python, которое и хостило модели, т.е. по API из стратегии шлешь входные данные ну и имя модели, на выходе предикт, условно.


Если считать что схема из MQL5 кода шлю Post запрос к этому же API (в ответ получаю предикт) взять за базовую схему (как я понимаю, с реализацией трудностей быть не должно), то можно ли как-то схему улучшить (читай ускорить). Т.е. вроде есть Python API, т.е. модели, можно связывать с терминалом вроде как-то можно, но стратегии со скриптом на Python, вроде и никак. Python API, вроде, даже к глобальным переменным терминала обращаться не умеет.


Через файлы и аналогичное точно проиграет варианту с API.

Реализованная интеграция с Питоном имеет ряд особенностей:

1. Скрипт Py может говорить только с терминалом и то с очень ограниченным словарным запасом. С МКЛ никакой связи.

2. Работает только в Win.

3. В терминале может быть активирован только один интерпретатор. Т.е. можно активировать только одно окружение. 

4. Очень быстрая загрузка истории. Всё остальное в порядке общей очереди.

Варианты реализации связи МКЛ <-> Python:

1. ZeroMQ - здесь и здесь . 

2. Я использую проверенную связку MQL4/5 <-> R <-> Python.  Работает как в мт4 так и в мт5.

3. Здесь на сайте есть много самописных связок MQL5-Python. Это на любителя.

4. Использовать БД Redis в качестве межпроцессного комутатора. 

Удачи

 
Vladimir Perervenko #:

Реализованная интеграция с Питоном имеет ряд особенностей:

1. Скрипт Py может говорить только с терминалом и то с очень ограниченным словарным запасом. С МКЛ никакой связи.

2. Работает только в Win.

3. В терминале может быть активирован только один интерпретатор. Т.е. можно активировать только одно окружение. 

4. Очень быстрая загрузка истории. Всё остальное в порядке общей очереди.

Варианты реализации связи МКЛ <-> Python:

1. ZeroMQ - здесь и здесь . 

2. Я использую проверенную связку MQL4/5 <-> R <-> Python.  Работает как в мт4 так и в мт5.

3. Здесь на сайте есть много самописных связок MQL5-Python. Это на любителя.

4. Использовать БД Redis в качестве межпроцессного комутатора. 

Удачи

Владимир, спасибо!


После беглого знакомства ZeroMQ пока выглядит как приоритетный и наиболее интересный/подходящий вариант. В том числе с точки зрения затрат сил на реализацию.

 
Я только пока не уверен что в рамках варианта ZeroMQ можно из MQL5 стратегии обращаться к коду Python, в примерах наоборот только, показано, вроде - из Python идет инициатива.
 
Replikant_mih #:
Я только пока не уверен что в рамках варианта ZeroMQ можно из MQL5 стратегии обращаться к коду Python, в примерах наоборот только, показано, вроде - из Python идет инициатива.

Обмен двухсторонний. Просто инициирующей стороной выбран Python(client) а отвечающей эксперт (сервер). Но возможны различные варианты.

 
Vladimir Perervenko #:

Обмен двухсторонний. Просто инициирующей стороной выбран Python(client) а отвечающей эксперт (сервер). Но возможны различные варианты.

Супер, понял, спасибо.

Причина обращения: