Discussão do artigo "Encapsulando modelos ONNX em classes"

 

Novo artigo Encapsulando modelos ONNX em classes foi publicado:

A programação orientada a objetos permite criar códigos mais compactos, fáceis de ler e modificar. Apresentamos um exemplo para três modelos ONNX.

A maioria dos votos é calculada pela fórmula <número total de votos>/2 + 1. Para um número total de votos igual a 3, a maioria é de 2 votos. Isso é chamado de "votação rígida".

Resultado do teste com as mesmas configurações.

Resultados de teste da votação rígida

Lembremos do desempenho de cada um dos três modelos individualmente, ou seja, a quantidade de trades lucrativos e não lucrativos. O primeiro modelo - 11:3, o segundo modelo - 6:1, o terceiro modelo - 16:10. 10.

Parece que, com a votação rígida, melhoramos o resultado - 16:4. 4. No entanto, é claro que precisamos verificar os relatórios completos e os gráficos de teste.

Autor: MetaQuotes

 
Artigo muito útil!

A versão 1.13.0 ou 1.14.0 do ONNX é usada pelo MT5?
 

Isso é realmente interessante, muito obrigado.

No arquivo ML ONNX.eurusd.D1.30.class.Training.py anexado ao artigo, há as seguintes linhas de código (linha 48 - 59) em def collect_dataset():

    for i in tqdm(range(n - sample_size)):
        w = df.iloc[i: i + sample_size + 1]
        x = w[['close', 'ma_fast', 'ma_slow']].iloc[:-1].values

        delta = x[0][-1] - w.iloc[-1]['close']
        if np.abs(delta)<=0.0001:
           y = 0, 1, 0
        else:
           if delta>0:
              y = 1, 0, 0
           else:
              y = 0, 0, 1

Qual é a lógica por trás da linha destacada acima, por favor?

A classificação é baseada na diferença entre o "ma_slow"(x[0][-1]) da primeira amostra e o "close"( fechamento) do novo alvo(w.iloc[-1]['close']). Além disso, haveria um tempo diferente de'sample_size-1'.

Além disso:

if delta>0:
              y = 1, 0, 0

isso não deveria ser y = 0,0,1? Ou seja, um sinal de venda.

Da mesma forma, para ONNX.eurusd.D1.10.class.Training.py em def collect_dataset(), linha45-47:

        x = w[['open', 'high', 'low', 'close']].iloc[:-1].values

        delta = x[3][-1] - w.iloc[-1]['close']
Como? A classificação é baseada na diferença entre o "fechamento" da quarta amostra(x[3][-1]) e o "fechamento" do novo alvo(w.iloc[-1]['close']); e haveria uma diferença de tempo de"sample_size-4".
 
Xiaoyu Huang #:
Artigo muito útil!

A versão 1.13.0 ou 1.14.0 do ONNX é usada pelo MT5?
Não consigo encontrar a informação. Há algum motivo para perguntar?