Discussione sull’articolo "Come utilizzare i modelli ONNX in MQL5"

 

Il nuovo articolo Come utilizzare i modelli ONNX in MQL5 è stato pubblicato:

ONNX (Open Neural Network Exchange) è un formato aperto creato per rappresentare modelli di machine learning. In questo articolo considereremo come creare un modello CNN-LSTM per prevedere le serie temporali finanziarie. Mostreremo anche come utilizzare il modello ONNX creato in un Expert Advisor MQL5.

Esistono due modi per creare un modello: È possibile utilizzare OnnxCreate per creare un modello da un file onnx o OnnxCreateFromBuffer per crearlo da un array di dati.

Se un modello ONNX viene utilizzato come risorsa in un EA, sarà necessario ricompilare l'EA ogni volta che si modifica il modello.


Non tutti i modelli hanno dimensioni di ingresso e/o di uscita del tensore completamente definite. Questa è normalmente la prima dimensione responsabile della dimensione del pacchetto. Prima di eseguire un modello, è necessario specificare in modo esplicito le dimensioni utilizzando le funzioni OnnxSetInputShape e OnnxSetOutputShape .

I dati di input del modello dovrebbero essere preparati nello stesso modo in cui è stato fatto durante l'addestramento del modello.

Autore: MetaQuotes

 

È necessario utilizzare la versione 3.9.16 di python?

  1. Scaricare il sorgente in formato .tar.gz
  2. Estrarre il sorgente utilizzando un programma come7-Zip
  3. Seguire le istruzioni contenute in PCbuild\readme.txt
 

Ho ottenuto la conversione in modelli ONNX per LightGBM in python 3.10 e 3.11, con i pacchetti onnxmltools e onnxconverter_common. L'output funzionava solo in python 3.10 con il pacchetto onnxruntime, che non andava bene in 3.11. Forse qualcosa è cambiato nelle ultime tre settimane.

Peccato che ME5 non supporti il launcher python py.

 
Potreste dirmi dove sperimentare qui?

Cosa cambiare, quali numeri in quale intervallo inserire, ecc. Lavoro meccanico, per favore
 
Ivan Butko #:
Potete dirmi per favore dove sperimentare qui?

strumento/timeframe e date in copy_rates_range, numero di prezzi di chiusura in ingresso per la previsione (qui time_step = 120 e input_shape=(120,1) in model.add(Conv1D)), - in questo caso è il numero di prezzi di chiusura orari su cui si basa la prossima previsione di prezzo.

l'architettura stessa dei modelli, ad es.

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

i parametri dell'EA

input double InpLots       = 1.0;    // Importo del lotto per aprire la posizione
input bool   InpUseStops   = true;   // Utilizzare gli stop nel trading
input int    InpTakeProfit = 500;    // Livello di TakeProfit
input int    InpStopLoss   = 500;    // Livello di StopLoss

l'algoritmo di trading stesso, ecc.

 
Quantum #:

instrument/timeframe e date in copy_rates_range, il numero di prezzi di chiusura in ingresso per la previsione (qui time_step = 120 e input_shape=(120,1) in model.add(Conv1D)) nell'EA cambia

l'architettura dei modelli stessi, ad es.

Parametri EA

l'algoritmo di trading stesso, ecc.

Grazie

 
Quantum #:

instrument/timeframe e date in copy_rates_range, il numero di prezzi di chiusura in ingresso per la previsione (qui time_step = 120 e input_shape=(120,1) in model.add(Conv1D)) nell'EA cambia

l'architettura dei modelli stessi, ad es.

Parametri EA

l'algoritmo di trading stesso, ecc.

I calcoli su GPU sono stati eseguiti su una scheda grafica NVIDIA GeForce RTX 2080 Ti con l'aiuto delle librerie ... e CUDNN 8.1.0.7.


Potreste indicarmi dove buttare questi file? (Li ho scaricati dal sito e non c'è nessun programma di installazione, solo file in una cartella).

 
Ivan Butko #:
I calcoli su GPU sono stati eseguiti su una scheda grafica NVIDIA GeForce RTX 2080 Ti utilizzando le librerie ... e CUDNN 8.1.0.7.


Potreste indicarmi dove lanciare questi file? (Li ho scaricati dal sito e non c'è un programma di installazione, solo file in una cartella).

C'è un video che spiega come installare CUDA, CUDNN, Keras e TensorFlow su Windows 11 per il GPU Deep Learning.

Nel primo commento del video, notare che è necessario specificare esplicitamente la versione di tensorflow 2.10.0.

18:35 a questo punto è sufficiente cambiare per installare tensorflow==2.10.0 . dopo di che seguire tutto ciò che 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...
 
 
Ivan Butko #:

Ricevuto!

Nel primo commento al video, notare che è necessario specificare esplicitamente tensorflow 2.10.0.

18:35 a questo punto basta cambiare in install tensorflow==2.10.0 . dopo di che seguire tutto quello che dice Jeff.
 
Ivan Butko #:
Potreste dirmi dove sperimentare qui?

Cosa cambiare, quali numeri in quale intervallo inserire, ecc. Lavoro meccanico, per favore

Non ha senso fare esperimenti, perché una previsione di questo tipo non differisce da una previsione ingenua (il valore del prezzo di chiusura precedente viene preso come previsione). In questo caso, si ottiene quasi il minimo errore di apprendimento (RMS), che non dice nulla sulla capacità predittiva del modello. Si tratta piuttosto di un esempio didattico su ONNX che dimostra come anche un'architettura complessa possa essere facilmente trasferita al terminale. Non so cosa si siano fumati gli autori di quell'articolo sulla ricerca di architetture di reti neurali per la previsione delle serie temporali :) in questo caso è necessaria una stima adeguata, oppure una classificazione invece di una regressione.

Opzioni di metriche per gli esperimenti

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