- Soporte de ONNX
- Conversión de formatos
- Autoconversión de los datos
- Creación de un modelo
- Inicio del modelo
- Comprobación en el simulador
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Estructura de los datos
Inicio del modelo
Para iniciar un modelo ONNX en MQL5, deberemos ejecutar 3 pasos:
- Cargarlo desde una archivo *.onnx con ayuda de la función OnnxCreate o desde un array con ayuda de OnnxCreateFromBuffer.
- Indicar el formulario de los datos de entrada y salida con las funciones OnnxSetInputShape y OnnxSetOutputShape.
- Iniciar el modelo con la ayuda de OnnxRun, transmitiéndole los parámetros de entrada y salida.
- Finalizar (en caso necesario) el funcionamiento del modelo con ayuda de OnnxRelease.
Al crear un modelo ONNX, deberemos considerar los límites y limitaciones existentes descritos en https://github.com/microsoft/onnxruntime/blob/rel-1.14.0/docs/OperatorKernels.md
Aquí tenemos algunos de ellos:
Operación |
Tipos de datos soportados |
---|---|
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) |
Más abajo le mostramos un ejemplo de código MQL5 del proyecto público ONNX.Price.Prediction.
const long ExtOutputShape[] = {1,1}; // formulario de datos de entrada del modelo
|
Ejemplo de ejecución del script:
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|
El terminal MetaTrader 5 ha seleccionado por sí mismo el ejecutor óptimo para realizar los cálculos ONNX Runtime Execution Provider. En este caso, el modelo ha trabajado utilizando la CPU.
Vamos a cambiar el script para calcular el porcentaje de previsiones existosas del precio Close usando como base las 10 barras anteriores.
#resource "Python/model.onnx" as uchar ExtModel[]// modelo en forma de recurso
|
Ejecutamos el script y obtenemos una precisión de predicción de alrededor del 51%
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|