Обсуждение статьи "Использование ONNX-моделей в MQL5"

 

Опубликована статья Использование ONNX-моделей в MQL5:

ONNX (Open Neural Network Exchange) — открытый стандарт представления моделей нейронных сетей. В данной статье мы рассмотрим процесс создания модели СNN-LSTM для прогнозирования финансовых временных рядов и использование созданной ONNX-модели в MQL5-эксперте.

Существует два способа создать модель: OnnxCreate для создания модели из onnx-файла и OnnxCreateFromBuffer для создания из массива данных.

Если ONNX-модель используется в эксперте в качестве ресурса, то после каждого её изменения эксперт необходимо перекомпилировать.


Не у всех моделей полностью определены размеры входных и/или выходных тензоров. Как правило, это первая размерность, отвечающая за размер пачки. Перед запуском модели необходимо явно указать размеры, которые будут использоваться. Для этого нужны функции OnnxSetInputShape и OnnxSetOutputShape.

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

Автор: MetaQuotes

 

Обязательно использовать версию python 3.9.16 ?

  1. Download the source as a .tar.gz
  2. Extract the source using a program such as 7-Zip
  3. Follow the instructions in  PCbuild\readme.txt
 

У меня конвертация в ONNX модели для LightGBM получилось в питоне 3.10 и 3.11, с пакетами onnxmltools и onnxconverter_common. Вывод получился только в питоне 3.10 с пакетом onnxruntime, который не встал в версии 3.11. Возможно, за прошедшие три недели что-то поменялось.

Плохо, что МЕ5 не поддерживает питоновский лаунчер py.

 
Подскажите, пожалуйста, а где здесь экспериментировать? 

Что менять, какие числа в каком диапазоне вставлять и тд. Механическую работу подскажите
 
Ivan Butko #:
Подскажите, пожалуйста, а где здесь экспериментировать?

инструмент/таймфрейм и даты в copy_rates_range, количество входных цен close для прогноза (здесь time_step = 120 и input_shape=(120,1) в model.add(Conv1D)), - в данном случае это количество часовых цен close, на которых строится прогноз следущей цены.

сама архитектура моделей, например

model = Sequential()
model.add(LSTM(units = 50, return_sequences = True, input_shape = (time_step, 1)))
model.add(Dropout(0.2))
model.add(LSTM(units = 50, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 50, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 50))
model.add(Dropout(0.2))
model.add(Dense(units = 1))
model.compile(optimizer='adam',loss= 'mse',metrics=[rmse()])

параметры советника

input double InpLots       = 1.0;    // Lots amount to open position
input bool   InpUseStops   = true;   // Use stops in trading
input int    InpTakeProfit = 500;    // TakeProfit level
input int    InpStopLoss   = 500;    // StopLoss level

сам алгоритм торговли и т.п.

 
Quantum #:

инструмент/таймфрейм и даты в copy_rates_range, количество входных цен close для прогноза (здесь time_step = 120 и input_shape=(120,1) в model.add(Conv1D)) в советнике меняется

сама архитектура моделей, например

параметры советника

сам алгоритм торговли и т.п.

Спасибо

 
Quantum #:

инструмент/таймфрейм и даты в copy_rates_range, количество входных цен close для прогноза (здесь time_step = 120 и input_shape=(120,1) в model.add(Conv1D)) в советнике меняется

сама архитектура моделей, например

параметры советника

сам алгоритм торговли и т.п.

GPU-расчеты производились на видеокарте NVIDIA GeForce RTX 2080 Ti при помощи библиотек ... и CUDNN 8.1.0.7.


Подскажите, пожалуйста, куда эти файлы кинуть? (скачал их с сайта, а там нет установщика, просто файлы в папке)

 
Ivan Butko #:
GPU-расчеты производились на видеокарте NVIDIA GeForce RTX 2080 Ti при помощи библиотек ... и CUDNN 8.1.0.7.


Подскажите, пожалуйста, куда эти файлы кинуть? (скачал их с сайта, а там нет установщика, просто файлы в папке)

Есть видео Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning по их установке

В 1-м комментарии к видео обратите внимание что нужно явно указать версию tensorflow 2.10.0

18:35 at this point just change to install tensorflow==2.10.0 . after this follow everything Jeff says.
Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning
Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning
  • 2022.01.05
  • www.youtube.com
Complete walkthrough of installing TensorFlow/Keras with GPU support on Windows 11. We make use of a "pip install" rather than conda, to ensure that we get t...
 
Quantum #:
Есть видео Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning по их установке

Принял!

 
Ivan Butko #:

Принял!

В 1-м комментарии к видео обратите внимание что нужно явно указать версию tensorflow 2.10.0

18:35 at this point just change to install tensorflow==2.10.0 . after this follow everything Jeff says.
 
Ivan Butko #:
Подскажите, пожалуйста, а где здесь экспериментировать? 

Что менять, какие числа в каком диапазоне вставлять и тд. Механическую работу подскажите

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

Варианты метрик для экспериментов

Time Series Forecasting: Error Metrics to Evaluate Model Performance
Time Series Forecasting: Error Metrics to Evaluate Model Performance
  • Pablo Cánovas
  • medium.com
The idea of this post comes from the different error metrics I have dealt with working with time series data and forecasting models. Among other things, we make energy production forecasts of renewable power plants of different capacities and technologies. Our aim is to develop forecasting models that reduce the penalties caused by the...