Discusión sobre el artículo "Envolviendo modelos ONNX en clases"

 

Artículo publicado Envolviendo modelos ONNX en clases:

La programación orientada a objetos permite crear un código más compacto, fácil de leer y modificar. Le presentamos un ejemplo para tres modelos ONNX.

Los votos mayoritarios se calculan con la fórmula <número total de votos>/2 + 1. Para un total de 3 votos, la mayoría será de 2 votos. Es lo que se conoce como "votación rígida".

Resultados de la prueba con la misma configuración.

Resultados de las pruebas de votación rígida

Recordemos el rendimiento de los tres modelos por separado, es decir, el número de operaciones rentables y no rentables. El primer modelo — 11: 3, el segundo modelo — 6 : 1, el tercer modelo — 16: 10.

Parece que con la ayuda de la votación rigurosa hemos mejorado nuestra puntuación a 16: 4. Pero, obviamente, debemos ver los informes completos y los gráficos de las pruebas.

Autor: MetaQuotes

 
Artículo muy útil!

¿Es ONNX versión 1.13.0 o 1.14.0 utilizado por MT5?
 

Esto es realmente interesante, muchas gracias.

En el archivo ML ONNX.eurusd.D1.30.class.Training.py adjunto al artículo, hay las siguientes líneas de código (línea 48 - 59) en 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

¿Cuál es la lógica detrás de la línea resaltada arriba, por favor?

La clasificación se basa en la diferencia entre el ' ma_slow ' de la primera muestra(x[0][-1]) y el 'close' del nuevo objetivo(w.iloc[-1]['close']). Además habría un tiempo diferente de'sample_size-1'.

Además:

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

¿no debería ser y = 0,0,1? Es decir, una señal de Venta.

Del mismo modo a ONNX.eurusd.D1.10.class.Training.py en def collect_dataset(), línea45-47:

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

        delta = x[3][-1] - w.iloc[-1]['close']
¿Cómo? La clasificación se basa en la diferencia entre el ' cierre' de la cuarta muestra(x[3][-1]) y el 'cierre' del nuevo objetivo(w.iloc[-1]['close']); y habría un tiempo diferente de'sample_size-4'.
 
Xiaoyu Huang #:
Artículo muy útil!

¿Es ONNX versión 1.13.0 o 1.14.0 utilizado por MT5?
Parece que no puedo encontrar la información. ¿Alguna razón para preguntar?