- Suporte a ONNX
- Conversão de formatos
- Autoconversão de dados
- Criação de modelo
- Inicialização do modelo
- Verificação no testador
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Estruturas de dados
Inicialização do modelo
Para utilizar o modelo ONNX em MQL5, é necessário seguir três etapas:
- Carregá-lo a partir do arquivo *.onnx usando a função OnnxCreate ou a partir de um array usando OnnxCreateFromBuffer.
- Especificar a forma dos dados de entrada e saída por meio das funções OnnxSetInputShape e OnnxSetOutputShape.
- Iniciar o modelo usando OnnxRun, após lhe dar parâmetros de entrada e saída.
- Encerrar o modelo, se necessário, com OnnxRelease.
Ao criar o modelo ONNX, é necessário considerar os limites e restrições existentes descritos em https://github.com/microsoft/onnxruntime/blob/rel-1.14.0/docs/OperatorKernels.md
Por exemplo, aqui estão algumas delas:
Operação |
Tipos de dados suportados |
---|---|
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) |
Veja abaixo um exemplo de código MQL5 extraído do projeto público ONNX.Price.Prediction.
const long ExtOutputShape[] = {1,1}; // forma dos dados de saída do modelo
|
Veja um exemplo de execução do script:
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|
O terminal MetaTrader 5 seleciona de forma independente o melhor executor para os cálculos ONNX Runtime Execution Provider. Neste caso, o modelo realiza seu trabalho usando a CPU.
Vamos modificar o script para calcular a porcentagem de previsões bem-sucedidas do preço de fechamento com base nos valores das 10 barras anteriores.
#resource "Python/model.onnx" as uchar ExtModel[]// modelo em forma de recurso
|
Executamos o script e obtemos uma precisão de previsão de cerca de 51%
ONNX: Creating and using per session threadpools since use_per_session_threads_ is true
|