Discussion de l'article "Envelopper les modèles ONNX dans des classes"

 

Un nouvel article Envelopper les modèles ONNX dans des classes a été publié :

La programmation orientée objet permet de créer un code plus compact, facile à lire et à modifier. Nous examinerons ici l'exemple de 3 modèles ONNX.

La majorité des voix est calculée selon l'équation <nombre total de voix>/2 + 1. Pour un total de 3 votes, la majorité est de 2 votes. C'est ce que l'on appelle un "vote à l’unanimité".

Le résultat du test est toujours obtenu avec les mêmes paramètres :

Résultats des tests du vote à l’unanimité

Rappelons le travail des 3 modèles séparément, à savoir le nombre de transactions rentables et non rentables. Premier modèle - 11 : 3, deuxième - 6 : 1, troisième - 16 : 10.

Il semble que nous ayons amélioré le résultat avec l'aide du vote à l’unanimité - 16 : 4. Mais, bien entendu, nous devons examiner des rapports complets et des tableaux de bord.

Auteur : MetaQuotes

 
Article très utile!

La version 1.13.0 ou 1.14.0 d'ONNX est-elle utilisée par MT5 ?
 

C'est très intéressant, merci beaucoup.

Dans le fichier ML ONNX.eurusd.D1.30.class.Training.py joint à l'article, il y a les lignes de code suivantes (ligne 48 - 59) dans 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

Quelle est la logique derrière la ligne surlignée ci-dessus ?

La classification est basée sur la différence entre le 'ma_slow' du premier échantillon(x[0][-1]) et le 'close' de la nouvelle cible(w.iloc[-1]['close']). De plus, il y aurait une différence de temps de'sample_size-1'.

De plus, il y aurait une différence de temps de 'sample_size-1' :

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

cela ne devrait-il pas être y = 0,0,1? C'est-à-dire un signal de vente.

De même pour ONNX.eurusd.D1.10.class.Training.py in def collect_dataset(), line45-47 :

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

        delta = x[3][-1] - w.iloc[-1]['close']
Comment ? La classification est basée sur la différence entre la 'clôture' du quatrième échantillon(x[3][-1]) et la 'clôture' de la nouvelle cible(w.iloc[-1]['close']) ; et il y aurait une différence de temps de'sample_size-4'.
 
Xiaoyu Huang #:
Article très utile!

La version 1.13.0 ou 1.14.0 d'ONNX est-elle utilisée par MT5 ?
Je n'arrive pas à trouver l'information. Quelle est la raison de cette question ?