- Supporto ONNX
- Conversione Di Formato
- Conversione automatica del tipo di dati
- Creazione di un Modello
- Esecuzione di un modello
- Eseguire nello Strategy Tester
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Strutture dati
Esecuzione di un modello
Per eseguire un modello ONNX in MQL5, completare 3 passaggi:
- Caricare il modello da un file *.onnx utilizzando la funzione OnnxCreate o da un array utilizzando OnnxCreateFromBuffer.
- Specificare le dimensioni dei dati di ingresso e di uscita utilizzando le funzioni OnnxSetInputShape e OnnxSetOutputShape.
- Eseguire il modello utilizzando la funzione OnnxRun, passando i parametri in ingresso e in uscita pertinenti.
- Quando necessario, è possibile terminare l'operatività del modello utilizzando la funzione OnnxRelease.
Quando si crea un modello ONNX, si dovrebbero considerare i limiti e le restrizioni esistenti, descritti in https://github.com/microsoft/onnxruntime/blob/rel-1.14.0/docs/OperatorKernels.md
Di seguito sono riportati alcuni esempi di tali restrizioni:
Operazione |
Tipi di dati supportati |
---|---|
ReduceSum |
tensor(double), tensor(float), tensor(int32), tensor(int64) |
Mul |
tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) |
Di seguito è riportato un esempio di codice MQL5 dal progetto pubblico ONNX.Price.Prediction.
const long ExtOutputShape[] = {1,1}; // dimensione del modello d'uscita
|
Esempio di esecuzione di uno script:
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|
Il terminale MetaTrader 5 ha selezionato l'esecutore ottimale per i calcoli — ONNX Runtime Execution Provider. In questo esempio, il modello è stato eseguito sulla CPU.
Modifichiamo lo script per calcolare la percentuale di successo delle previsioni dei prezzi di Chiusura effettuate in base ai valori delle precedenti 10 barre.
#resource "Python/model.onnx" as uchar ExtModel[]// modello come risorsa
|
Esegui lo script: l'accuratezza della previsione è di circa il 51%
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|