Discussão do artigo "Uso de modelos ONNX em MQL5"

 

Novo artigo Uso de modelos ONNX em MQL5 foi publicado:

O ONNX (Open Neural Network Exchange) é um padrão aberto para a representação de modelos de redes neurais. Neste artigo, consideraremos o processo de criação do modelo SNN-LSTM para previsão de séries temporais financeiras e o uso do modelo ONNX criado em um Expert Advisor MQL5.

Há duas maneiras de criar um modelo: Você pode usar o OnnxCreate para criar um modelo a partir de um arquivo ONNX ou o OnnxCreateFromBuffer para criá-lo a partir de um array de dados.

Se o modelo ONNX for usado como recurso em um EA, será necessário recompilar o EA sempre que o modelo for alterado.


Nem todos os modelos têm tensor de entrada e/ou saída de tamanhos totalmente definidos. Normalmente, essa é a primeira dimensão responsável pelo tamanho do pacote. Antes de executar um modelo, você deve especificar explicitamente os tamanhos usando as funções OnnxSetInputShape e OnnxSetOutputShape.

Os dados de entrada do modelo devem ser preparados da mesma forma que foram feitos no treinamento do modelo.

Autor: MetaQuotes

 

Você precisa usar a versão 3.9.16 do python?

  1. Baixe o código-fonte como .tar.gz
  2. Extraia o código-fonte usando um programa como o7-Zip
  3. Siga as instruções em PCbuild\readme.txt
 

Consegui a conversão para modelos ONNX para LightGBM no python 3.10 e 3.11, com os pacotes onnxmltools e onnxconverter_common. A saída funcionou apenas no python 3.10 com o pacote onnxruntime, que não se encaixou no 3.11. Talvez algo tenha mudado nas últimas três semanas.

É uma pena que o ME5 não ofereça suporte ao lançador python py.

 
Você poderia me dizer onde posso fazer experiências aqui?

O que mudar, que números em que intervalo inserir, etc. Trabalho mecânico, por favor
 
Ivan Butko #:
Você pode me dizer onde posso fazer experiências aqui?

instrumento/timeframe e datas em copy_rates_range, número de preços de fechamento de entrada para a previsão (aqui time_step = 120 e input_shape=(120,1) em model.add(Conv1D)), - nesse caso, é o número de preços de fechamento por hora no qual a próxima previsão de preço se baseia.

a arquitetura dos modelos em si, por exemplo

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

parâmetros do EA

input double InpLots       = 1.0;    // Valor dos lotes para abrir a posição
input bool   InpUseStops   = true;   // Usar stops nas negociações
input int    InpTakeProfit = 500;    // Nível de TakeProfit
input int    InpStopLoss   = 500;    // Nível de StopLoss

o próprio algoritmo de negociação, etc.

 
Quantum #:

instrumento/timeframe e datas em copy_rates_range, o número de preços de fechamento de entrada para a previsão (aqui time_step = 120 e input_shape=(120,1) em model.add(Conv1D)) nas alterações do EA

a arquitetura dos modelos em si, por exemplo

Parâmetros do EA

o próprio algoritmo de negociação, etc.

Obrigado

 
Quantum #:

instrumento/timeframe e datas em copy_rates_range, o número de preços de fechamento de entrada para a previsão (aqui time_step = 120 e input_shape=(120,1) em model.add(Conv1D)) nas alterações do EA

a arquitetura dos modelos em si, por exemplo

Parâmetros do EA

o próprio algoritmo de negociação, etc.

Os cálculos de GPU foram realizados na placa de vídeo NVIDIA GeForce GeForce RTX 2080 Ti com a ajuda das bibliotecas ... e CUDNN 8.1.0.7.


Você poderia me dizer onde posso jogar esses arquivos? (Eu os baixei do site, e não há instalador, apenas arquivos em uma pasta).

 
Ivan Butko #:
Os cálculos de GPU foram realizados em uma placa de vídeo NVIDIA GeForce GeForce RTX 2080 Ti usando as bibliotecas ... e CUDNN 8.1.0.7.


Você poderia me dizer onde posso jogar esses arquivos? (Eu os baixei do site, e não há instalador, apenas arquivos em uma pasta).

Há um vídeo Configurando CUDA, CUDNN, Keras e TensorFlow no Windows 11 para aprendizado profundo de GPU sobre como instalá-los

No primeiro comentário do vídeo, observe que você precisa especificar explicitamente a versão 2.10.0 do TensorFlow.

18:35 Nesse ponto, basta alterar para instalar o tensorflow==2.10.0. Depois disso, siga tudo o que Jeff disser.
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 #:

Entendido!

No primeiro comentário do vídeo, observe que você precisa especificar explicitamente o tensorflow 2.10.0.

18:35 Nesse ponto, basta alterar para instalar o tensorflow==2.10.0. Depois disso, siga tudo o que o Jeff disser.
[Excluído]  
Ivan Butko #:
Você poderia me dizer o que devo experimentar aqui?

O que mudar, quais números em qual intervalo inserir, etc. Trabalho mecânico, por favor

Não vale a pena fazer experimentos aqui, pois essa previsão não difere de uma previsão ingênua (o valor do preço de fechamento anterior é considerado uma previsão). Nesse caso, você realmente obtém quase o menor erro de aprendizado (RMS), o que não diz nada sobre a capacidade de previsão do modelo. Em vez disso, trata-se de um exemplo didático no ONNX de que até mesmo uma arquitetura complexa pode ser facilmente transferida para o terminal. Não sei o que os autores desse artigo sobre pesquisa de arquiteturas de redes neurais para previsão de séries temporais estavam fumando :) aqui ou a estimativa é necessária de forma adequada, ou a classificação em vez da regressão.

Opções de métricas para experimentos

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