Discussão do artigo "Uso de modelos ONNX em MQL5" - página 4

 
Muito obrigado. Agradeço muito. Desejo muito mais artigos sobre isso em um futuro próximo
 

Há um problema com a biblioteca onyx. Alguma ideia?

Ao instalar o onyx, recebi um erro

ERRO: Não foi possível encontrar uma versão que satisfaça o requisito onyx (das versões: 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ERRO: Não foi encontrada nenhuma distribuição correspondente para o onyx

então, ao executar o t2fonnx

import onyx

ModuleNotFoundError: Nenhum módulo chamado 'onyx'



 
É estranho que a rede seja treinada em um período de uma hora, mas o Expert Advisor alimenta dados diários. Isso é um erro? Ou não estou entendendo alguma coisa?
 
donbar upbar #:

Há um problema com a onyx lib. Alguma ideia?

Ao instalar o onyx, recebi um erro

ERRO: Não foi possível encontrar uma versão que satisfaça o requisito onyx (das versões: 0.0.5, 0.0.17, 0.0.19, 0.0.20, 0.0.21, 0.1, 0.1.1, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.3, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.3.11, 0.3.12, 0.4, 0.4.1, 0.4.2, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.5, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.8.5, 0.8.7, 0.8.10, 0.8.11)

ERRO: Nenhuma distribuição correspondente encontrada para onyx

então, ao executar o t2fonnx

import onyx

ModuleNotFoundError: Nenhum módulo chamado 'onyx'



Olá Donbar, parece que você está tentando instalar o pacote errado. Ele deveria ser onnx, não onyx.
 

Olá, obrigado pelo artigo. Um ótimo passo a passo sobre como criar um modelo de ML e incorporá-lo em um EA!

Tentei reproduzir seus resultados, mas estou tendo alguns problemas. Gostaria que você pudesse me ajudar a entender o motivo.

Segui o artigo cuidadosamente, mas acabei obtendo resultados radicalmente diferentes no testador de estratégias. Entendo que há algumas características aleatórias nesses algoritmos, mas ainda estou surpreso com a diferença. Também tive o cuidado de utilizar os mesmos períodos de tempo para que, pelo menos, meus dados de treinamento e teste fossem os mesmos para fins de construção de modelos, e meu backtest MT5 foi no mesmo período. Obtive resultados muito diferentes.

Tentei identificar as possíveis causas e acho que a diferença mais interessante começa durante a criação do modelo. Minhas funções de perda sugerem que você obteve uma generalização muito melhor ao analisar o desempenho dos dados de teste/validação. Eu as incluí no final desta mensagem.

Você pode sugerir possíveis causas para isso? O modelo é tão frágil que isso não é inesperado?

Minha tentativa mais recente de reproduzir envolveu simplesmente copiar e colar seu código Python final, inserindo algumas chamadas Matplotlib para produzir os gráficos de perda, mas obtive basicamente os mesmos resultados. Você pode sugerir como posso reproduzir melhor seus resultados?

Obrigado, senhor

Arquivos anexados:
LOSS.png  99 kb
RMSE.png  120 kb
copypaste.py  5 kb
 
Vladimir Perervenko projeto de aprendizado de máquina consiste em três fases:
  • pré-processamento (muitas coisas)
  • Seleção de modelos, treinamento, otimização, etc.
  • implementação

O uso de modelos ONNX em µl resolve o problema de implementação. No entanto, nem todos os modelos e nem sempre são fáceis.

O treinamento e a otimização dos modelos são resolvidos por um processo separado em Python.

Mas, de todos os itens acima, o primeiro estágio é o mais demorado, altamente criativo e o mais importante. E é impossível realizá-la no µl. Não consideramos o dimensionamento primitivo como pré-processamento. E a sabedoria popular diz: "Lixo dentro - lixo fora". Há muito a ser desenvolvido e implementado adicionalmente na MCL para o uso completo do MO somente na MCL. É impossível abraçar o imenso, especialmente porque ele está em constante expansão.

Portanto, para executar um pré-processo, crie-o em outra linguagem (quem dominar R/Python/Julia etc.) ou tente convertê-lo em ONNX.

A vantagem de implementar o ONNX até o momento é apenas aprender a converter, criar, simplificar e otimizar os modelos ONNX. Pode ser útil no futuro.

Você não poderia dizer melhor, tudo é preciso e direto ao ponto

 
Rorschach #:

Transferir o pré-processamento para o MT não é um problema, eu realmente quero testar o sistema no testador MT, em python/R preciso escrever meu próprio testador, repleto de erros.

Já existem muitos testadores, testados em R e python.

Mas transferir o pré-processamento é apenas um problema, pois o pré-processamento não é um cálculo trivial de escala ou estocástico.
 
Bill M testador de estratégias. Entendo que há algumas características aleatórias nesses algoritmos, mas ainda estou surpreso com a diferença. Também tive o cuidado de utilizar os mesmos períodos de tempo para que, pelo menos, meus dados de treinamento e teste fossem os mesmos para fins de construção de modelos, e meu backtest MT5 foi no mesmo período. Obtive resultados muito diferentes.

Tentei identificar as possíveis causas e acho que a diferença mais interessante começa durante a criação do modelo. Minhas funções de perda sugerem que você obteve uma generalização muito melhor ao analisar o desempenho dos dados de teste/validação. Eu as incluí no final desta mensagem.

Você pode sugerir possíveis causas para isso? O modelo é tão frágil que isso não é inesperado?

Meu esforço mais recente para reproduzir envolveu simplesmente copiar e colar seu código Python final, inserindo algumas chamadas Matplotlib para produzir os gráficos de perda, mas tive basicamente os mesmos resultados. Você poderia sugerir como eu poderia reproduzir melhor seus resultados?

Obrigado, senhor

Também estou enfrentando o mesmo problema aqui.

Alguém pode ajudar, por favor?

 
Joseph #:

Também estou enfrentando o mesmo problema aqui.

Alguém pode ajudar, por favor?

Continue minha investigação do problema que estou enfrentando (provavelmente outros também); e atualizações de minhas descobertas.

Antes de mais nada, muito obrigado, MetaQuotes (o autor), por compartilhar esse artigo detalhado. Estou aprendendo muito em minha busca de negociação de ML.

Executando os arquivos onnx originais do artigo em minha conta MetaQuates-Demo, consegui reproduzir os mesmos resultados. No entanto, ao treinar novamente o modelo onnx com o arquivo ONNX.eurusd.H1.120.Training.py:

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00

o modelo (onnx anexado: ) pontua:

RMSE         : 0.005212606864326095
MSE          : 2.7171270322019527e-05
R2 score     : -3.478924709873314

e os resultados do backtest de 1Jan2023-26Mar2023 anexados: "backtest results.png"

MetaQuotes
  • 2023.11.23
  • www.mql5.com
Trader's profile
Arquivos anexados:
 

Treinei novamente o ONNX.eurusd.H1.120.Training.py anexado com o seguinte:

data start date = 2022-11-28 12:28:00
data end date = 2023-03-28 12:28:00

o modelo (onnx anexado:) pontua:

RMSE         : 0.0014680559413400179
MSE          : 2.155188246903726 e-06
R2 score     : 0.9699715149559284

e os resultados do bactest de 1Jan2023-26Mar2023 anexados: "bacttest result2.png"

Então, com base nos exercícios acima, acho que o modelo usado para produzir o resultado final do artigo provavelmente não seria treinado com as seguintes datas?

data start date = 2022-09-03 00:00:00
data end date = 2023-01-01 00:00:00
Gostaria que alguém pudesse comentar sobre isso.
Arquivos anexados: