Cоздание модели

Есть несколько способов получить готовую модель в формате ONNX. Признанной библиотекой является ONNX Model Zoo, которая содержит несколько предварительно обученных моделей ONNX для разных типов задач. Достоинством данной коллекции является то, что в ноутбуке каждой модели содержатся ссылки на набор обучающих данных, а также ссылки на оригинальный научный документ, описывающий архитектуру модели.

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

pip install onnxruntime       # CPU build
pip install onnxruntime-gpu   # GPU build

Для вызова среды выполнения ONNX в Python используйте следующую команду

import onnxruntime
session = onnxruntime.InferenceSession("path to model")

Входные и выходные данные для использования модели нужно смотреть в документации к соответствующей модели. Для просмотра модели можно также использовать такие средства визуализации, как Netron или WinML Dashboard. Среда выполнения ONNX также позволяет запрашивать метаданные модели и ее входные и выходные данные:

results = session.run(["output1""output2"], {
                      "input1"indata1"input2"indata2})
results = session.run([], {"input1"indata1"input2"indata2})

Вы можете создавать ONNX модели прямо в терминале MetaTrader 5 или в среде разработки MetaEditor на Python.

Python в MetaTrader 5

Платформа MetaTrader 5 поддерживает работу со скриптами Python прямо из коробки. Для этого разработчики терминала предоставили и поддерживают модуль MetaTrader5 для Python — https://pypi.org/project/MetaTrader5.

Интегрированная среда разработки MetaEditor позволяет писать не только приложения на MQL5, но и запускать питоновские скрипты прямо из редактора. Для этого необходимо указать путь к исполняемому файлу в настройках MetaEditor:

Установка пути к исполняемому файлу Python в настройках MetaEditor

Если Python отсутствует на вашем компьютере, нажмите "Установить", чтобы загрузить установочный файл.

Вы можете создать в MetaEdtior или загрузить в папку данных терминала скрипт на Python и сразу же запустить его по клавише F7 ("Компилировать"). После этого будет открыт терминал MetaTrader 5 и на текущем графике будет запущен скрипт. Сообщения из консоли Python (stdout, stderr) будут выведены в раздел "Ошибки".

Схема работы с моделями в MetaTrader 5

Язык MQL5 позволяет запускать ONNX модели прямо в терминале MetaTrader 5. Делается это в 3 шага:

  1. Натренировать модель в сторонней платформе, например, в Python.
  2. Сконвертировать модель в ONNX
  3. Включить ONNX модель в советника с помощью ONNX-функций и запустить в терминале MetaTrader 5.

Python интеграция языка MQL5 позволяет запускать питоновский скрипт и сохранять ONNX модель в редакторе MetaEditor или даже запуском на графике в MetaTrader 5. Вы можете тренировать модель с помощью однажды написанного скрипта на Python с нужной вам периодичностью прямо в терминале. Так как библиотека содержит встроенные готовые функции для получения ценовых данных, которые можно подать на вход ONNX модели:

  • copy_rates_from - получает бары, начиная с указанной даты;
  • copy_rates_from_pos - получает бары, начиная с указанного индекса;
  • copy_rates_range - получает бары в указанном диапазоне дат;
  • copy_ticks_from - получает тики, начиная с указанной даты;
  • copy_ticks_range - получает тики за указанный диапазон дат.

 

Пример готовой модели #

Пример готовой ONNX модели вы можете найти в публичных проектах. Для этого необходимо предварительно активировать MQL5 Storage в Навигаторе, указав свой MQL5 логин в настройках MetaEditor с учетом регистра.

activate_storage

После активации найдите проект ONNX.Price.Prediction и присоединитесь к нему через команду контекстного меню.

project_join

 

Далее обновите проект из MQL5  Storage.

update_project

После этого вам станет доступен проект, в котором вы найдете готовую ONNX модель, два питоновских скрипта, MQL5 скрипт для работы проекта и файл MQL5 проекта (ONNX.Price.Prediction.mqproj).

python_script

 

 

Можно самостоятельно создать ONNX модель с помощью скрипта PricePredictionTraining.py, включенного в проект. Для этого необходимо предварительно из командной строки установить на компьютер необходимые модули.

python.exe -m pip install --upgrade pip
python -m pip install --upgrade tensorflow
python -m pip install --upgrade pandas
python -m pip install --upgrade scikit-learn
python -m pip install --upgrade matplotlib
python -m pip install --upgrade tqdm
python -m pip install --upgrade metatrader5
python -m pip install --upgrade onnx==1.12
python -m pip install --upgrade tf2onnx
python -m pip install --upgrade numpy
python -m pip install onnxruntime

После установки модулей откройте в MetaEditor скрип PricePredictionTraining.py и запустите его на исполнение кнопкой "Компилировать" или клавишей F7.

python_script_compile

 

Перед запуском питоновского скрипта убедитесь, что терминал MetaTrader 5 подключен к серверу, на котором есть символ EURUSD. Например, подключитесь к серверу MetaQuotes-Demo и проверьте в настройках  терминала чек-бокс "Интеграция с Python"

terminal_py_integration_check_box

 

В процессе тренировки сети MetaEditor будет выводить сообщения из питоновского скрипта, пока тренировка не завершится.

onnx_model_ready

 

При достижении результата в 100%  ONNX модель готова и сохраняется в папку проекта <каталог данных терминала>\MQL5\Shared Projects\ONNX.Price.Prediction\Python.

Проверить полученную модель можно запуском второго скрипта PricePrediction.py по кнопке F7.

prediction_result