Discussion de l'article "Comment utiliser les modèles ONNX dans MQL5"

 

Un nouvel article Comment utiliser les modèles ONNX dans MQL5 a été publié :

ONNX (Open Neural Network Exchange) est un format ouvert, conçu pour représenter des modèles d'apprentissage automatique. Dans cet article, nous verrons comment créer un modèle CNN-LSTM pour prévoir des séries temporelles financières. Nous montrerons également comment utiliser le modèle ONNX créé dans un Expert Advisor MQL5.

Il existe 2 manières de créer un modèle : vous pouvez utiliser OnnxCreate pour créer un modèle à partir d'un fichier onnx, ou OnnxCreateFromBuffer pour le créer à partir d'un tableau de données.

Si un modèle ONNX est utilisé comme ressource dans un EA, vous devrez recompiler l'EA à chaque fois que vous modifiez le modèle.


Tous les modèles n'ont pas de tailles d'entrée et/ou de tenseur de sortie entièrement définis. Il s'agit normalement de la première dimension responsable de la taille du package. Avant d'exécuter un modèle, vous devez spécifier explicitement les tailles à l'aide des fonctions OnnxSetInputShape et OnnxSetOutputShape . Les données d'entrée du modèle doivent être préparées de la même manière que lors de l’entraînement du modèle.

Pour les données d'entrée et de sortie, nous recommandons d'utiliser les tableaux, des matrices et/ou des vecteurs du même type que ceux qui sont utilisés dans le modèle. Dans ce cas, vous n'aurez pas à convertir les données lors de l'exécution du modèle. Si les données ne peuvent pas être représentées dans le type requis, les données seront automatiquement converties.


Auteur : MetaQuotes

 

Faut-il utiliser la version 3.9.16 de python ?

  1. Téléchargez les sources au format .tar.gz
  2. Extraire la source à l'aide d'un programme tel que7-Zip
  3. Suivez les instructions dans PCbuild\readme.txt
 

J'ai obtenu la conversion en modèles ONNX pour LightGBM dans python 3.10 et 3.11, avec les paquets onnxmltools et onnxconverter_common. La sortie ne fonctionnait qu'en python 3.10 avec le paquetage onnxruntime, qui ne fonctionnait pas en 3.11. Peut-être que quelque chose a changé au cours des trois dernières semaines.

Dommage que ME5 ne supporte pas le lanceur python py.

 
Pourriez-vous m'indiquer où expérimenter ici ?

Que changer, quels chiffres dans quelle plage insérer, etc. Travail mécanique, s'il vous plaît
 
Ivan Butko #:
Pouvez-vous m'indiquer où expérimenter ici ?

instrument/horizon et dates dans copy_rates_range, nombre de prix de clôture d'entrée pour la prévision (ici time_step = 120 et input_shape=(120,1) dans model.add(Conv1D)), - dans ce cas, il s'agit du nombre de prix de clôture horaires sur lesquels la prévision de prix suivante est basée.

l'architecture des modèles elle-même, par exemple

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

les paramètres de l'EA

input double InpLots       = 1.0;    // Montant des lots pour la position d'ouverture
input bool   InpUseStops   = true;   // Utiliser des stops dans la négociation
input int    InpTakeProfit = 500;    // Niveau TakeProfit
input int    InpStopLoss   = 500;    // Niveau de StopLoss

l'algorithme de trading lui-même, etc.

 
Quantum #:

instrument/timeframe et dates dans copy_rates_range, le nombre de prix de clôture en entrée pour la prévision (ici time_step = 120 et input_shape=(120,1) dans model.add(Conv1D)) dans les changements EA

l'architecture des modèles eux-mêmes, par exemple

Paramètres de l'EA

l'algorithme de négociation lui-même, etc.

Merci de votre compréhension.

 
Quantum #:

instrument/timeframe et dates dans copy_rates_range, le nombre de prix de clôture en entrée pour la prévision (ici time_step = 120 et input_shape=(120,1) dans model.add(Conv1D)) dans les changements EA

l'architecture des modèles eux-mêmes, par exemple

Paramètres de l'EA

l'algorithme de négociation lui-même, etc.

Les calculs GPU ont été effectués sur une carte graphique NVIDIA GeForce RTX 2080 Ti à l'aide des bibliothèques ... et de CUDNN 8.1.0.7.


Pourriez-vous m'indiquer où jeter ces fichiers ? (Je les ai téléchargés sur le site, et il n'y a pas d'installateur, juste des fichiers dans un dossier).

 
Ivan Butko #:
Les calculs GPU ont été effectués sur une carte graphique NVIDIA GeForce RTX 2080 Ti en utilisant les bibliothèques ... et CUDNN 8.1.0.7.


Pourriez-vous m'indiquer où jeter ces fichiers ? (Je les ai téléchargés depuis le site, et il n'y a pas d'installateur, juste des fichiers dans un dossier).

Il existe une vidéo intitulée Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning (Installation de CUDA, CUDNN, Keras et TensorFlow sous Windows 11 pour l'apprentissage profond par le GPU) qui explique comment les installer.

Dans le premier commentaire de la vidéo, notez que vous devez spécifier explicitement la version 2.10.0 de tensorflow.

18:35 à ce stade, il suffit de changer pour installer tensorflow==2.10.0 . après cela, suivez tout ce que Jeff dit.
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...
 
Ivan Butko #:

Bien reçu !

Dans le premier commentaire de la vidéo, veuillez noter que vous devez spécifier explicitement tensorflow 2.10.0.

18:35 à ce stade, il suffit de changer pour installer tensorflow==2.10.0 . après cela, suivez tout ce que Jeff dit.
 
Ivan Butko #:
Pourriez-vous m'indiquer où expérimenter ici ?

Que changer, quels chiffres dans quelle plage insérer, etc. Travail mécanique, s'il vous plaît

Il est inutile d'expérimenter ici, car une telle prévision ne diffère pas d'une prévision naïve (la valeur du cours de clôture précédent est prise comme prévision). Dans ce cas, vous obtenez pratiquement la plus petite erreur d'apprentissage (RMS), ce qui ne dit rien sur la capacité prédictive du modèle. Il s'agit plutôt d'un exemple éducatif sur ONNX qui montre que même une architecture complexe peut être facilement transférée au terminal. Je ne sais pas ce que les auteurs de cet article sur la recherche d'architectures de réseaux neuronaux pour la prévision des séries temporelles fumaient :) ici, soit l'estimation est nécessaire, soit la classification au lieu de la régression.

Options de métriques pour les expériences

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