Discussione sull’articolo "Implementare i modelli ONNX in classi"

 

Il nuovo articolo Implementare i modelli ONNX in classi è stato pubblicato:

La programmazione orientata agli oggetti consente di creare un codice più compatto che sia facile da leggere e da modificare. Qui di seguito vedremo l'esempio di tre modelli ONNX.

La maggioranza dei voti viene calcolata in base all'equazione <numero totale di voti>/2 + 1. Per un totale di 3 voti, la maggioranza è di 2 voti. Si tratta di un cosiddetto "voto duro".

Il risultato del test è ancora con le stesse impostazioni.

Risultati del test di voto duro

Ricordiamo il lavoro di tutti e tre i modelli separatamente, ovvero il numero di operazioni profittevoli e non profittevoli. Primo modello - 11 : 3, secondo - 6 : 1, terzo - 16 : 10.

Sembra che abbiamo migliorato il risultato con l'aiuto di un voto duro - 16 : 4. Ma, naturalmente, è necessario esaminare i rapporti completi e i grafici del test.

Autore: MetaQuotes

 
Articolo molto utile!

La versione 1.13.0 o 1.14.0 di ONNX è utilizzata da MT5?
 

È davvero interessante, grazie mille.

Nel file ML ONNX.eurusd.D1.30.class.Training.py allegato all'articolo, ci sono le seguenti righe di codice (riga 48 - 59) in 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 è la logica dietro la riga evidenziata sopra?

La classificazione si basa sulla differenza tra il 'ma_slow' del primo campione(x[0][-1]) e il 'close' del nuovo target(w.iloc[-1]['close']). Inoltre ci sarebbe una differenza di tempo di'sample_size-1'.

Inoltre:

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

non dovrebbe essere y = 0,0,1? Cioè un segnale di vendita.

Analogamente a ONNX.eurusd.D1.10.class.Training.py in def collect_dataset(), riga45-47:

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

        delta = x[3][-1] - w.iloc[-1]['close']
Come? La classificazione si basa sulla differenza tra il 'close' del quarto campione(x[3][-1]) e il 'close' del nuovo target(w.iloc[-1]['close']); e ci sarebbe una differenza temporale di'sample_size-4'.
 
Xiaoyu Huang #:
Articolo molto utile!

La versione 1.13.0 o 1.14.0 di ONNX è utilizzata da MT5?
Non riesco a trovare le informazioni. C'è qualche motivo per chiederlo?