Discusión sobre el artículo "Uso de modelos ONNX en MQL5"

 

Artículo publicado Uso de modelos ONNX en MQL5:

ONNX (Open Neural Network Exchange) es un estándar abierto para representar modelos de redes neuronales. En este artículo, analizaremos el proceso de creación de un modelo CNN-LSTM para pronosticar series temporales financieras, y también el uso del modelo ONNX creado en un asesor experto MQL5.

Hay dos formas de crear un modelo: OnnxCreate para crear un modelo a partir de un archivo onnx y OnnxCreateFromBuffer para crearlo a partir de un array de datos.

Si el modelo ONNX se utiliza como recurso en un asesor, este deberá recompilarse tras cada cambio.


No todos los modelos tienen tamaños de tensor de entrada y/o salida totalmente definidos. Como norma general, la primera dimensionalidad es responsable del tamaño del paquete. Antes de iniciar el modelo, deberán especificarse explícitamente las dimensiones que se van a utilizar. Para ello, se necesitarán las funciones OnnxSetInputShape y OnnxSetOutputShape.

Los datos de entrada del modelo deberán prepararse del mismo modo en que se usaron para entrenar el modelo.


Autor: MetaQuotes

 

¿Es necesario utilizar la versión 3.9.16 de python?

  1. Descargue el código fuente como .tar.gz
  2. Extraiga el código fuente con un programa como7-Zip
  3. Siga las instrucciones de PCbuild\readme.txt
 

Conseguí la conversión a modelos ONNX para LightGBM en python 3.10 y 3.11, con los paquetes onnxmltools y onnxconverter_common. La salida sólo funcionó en python 3.10 con el paquete onnxruntime, que no se ajustó en 3.11. Tal vez algo ha cambiado en las últimas tres semanas.

Lástima que ME5 no soporte el lanzador python py.

 
¿Podría decirme dónde experimentar aquí?

Qué cambiar, qué números en qué rango insertar, etc. Trabajo mecánico, por favor
 
Ivan Butko #:
¿Puede decirme dónde experimentar aquí?

instrumento/marco temporal y fechas en copy_rates_range, número de precios de cierre de entrada para la previsión (aquí time_step = 120 y input_shape=(120,1) en model.add(Conv1D)), - en este caso se trata del número de precios de cierre horarios en los que se basa la siguiente previsión de precios.

la propia arquitectura de los modelos, por ejemplo

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()])

los parámetros del EA

input double InpLots       = 1.0;    // Importe de los lotes para abrir la posición
input bool   InpUseStops   = true;   // Utilizar stops en las operaciones
input int    InpTakeProfit = 500;    // Nivel de TakeProfit
input int    InpStopLoss   = 500;    // Nivel StopLoss

el propio algoritmo de negociación, etc.

 
Quantum #:

instrumento/marco temporal y fechas en copy_rates_range, el número de precios de cierre de entrada para la previsión (aquí time_step = 120 y input_shape=(120,1) en model.add(Conv1D)) en el EA cambia

la arquitectura de los propios modelos, por ejemplo

Parámetros de EA

el propio algoritmo de negociación, etc.

Gracias

 
Quantum #:

instrumento/marco temporal y fechas en copy_rates_range, el número de precios de cierre de entrada para la previsión (aquí time_step = 120 y input_shape=(120,1) en model.add(Conv1D)) en el EA cambia

la arquitectura de los propios modelos, por ejemplo

Parámetros de EA

el propio algoritmo de negociación, etc.

GPU-cálculos se realizaron en NVIDIA GeForce GeForce RTX 2080 Ti tarjeta gráfica con la ayuda de las bibliotecas ... y CUDNN 8.1.0.7.


¿Podría decirme dónde tirar estos archivos? (Los he descargado desde el sitio, y no hay instalador, sólo los archivos en una carpeta).

 
Ivan Butko #:
Los cálculos de GPU se realizaron en una tarjeta gráfica NVIDIA GeForce RTX 2080 Ti utilizando las librerías ... y CUDNN 8.1.0.7.


Por favor, ¿podría decirme dónde tirar estos archivos? (Los descargué del sitio, y no hay instalador, sólo archivos en una carpeta).

Hay un video Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning sobre cómo instalarlos

En el 1er comentario del vídeo, ten en cuenta que necesitas especificar explícitamente la versión 2.10.0 de tensorflow.

18:35 en este punto solo cambia a install tensorflow==2.10.0 . despues de esto sigue todo lo que dice Jeff.
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...
 

¡Ya está!

 
Ivan Butko #:

¡Copiado!

En el 1er comentario del video, ten en cuenta que necesitas especificar explícitamente tensorflow 2.10.0.

18:35 en este punto solo cambia a install tensorflow==2.10.0 . despues de esto sigue todo lo que dice Jeff.
 
Ivan Butko #:
¿Podría decirme por favor dónde experimentar aquí?

Qué cambiar, qué números en qué rango insertar, etc. Trabajo mecánico, por favor

No tiene sentido experimentar ahí, porque tal previsión no difiere de una ingenua (se toma como previsión el valor del precio de cierre anterior). En este caso, realmente se obtiene casi el menor error de aprendizaje (RMS), lo que no dice nada sobre la capacidad de predicción del modelo. Se trata más bien de un ejemplo didáctico sobre ONNX de que incluso una arquitectura compleja puede trasladarse fácilmente al terminal. No sé qué estaban fumando los autores de ese artículo sobre la investigación de arquitecturas de redes neuronales para la predicción de series temporales :) aquí o se necesita una estimación adecuada, o clasificación en lugar de regresión.

Opciones de métricas para experimentos

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...