Diskussion zum Artikel "ONNX-Modelle in Klassen packen"

 

Neuer Artikel ONNX-Modelle in Klassen packen :

Die objektorientierte Programmierung ermöglicht die Erstellung eines kompakteren Codes, der leicht zu lesen und zu ändern ist. Hier sehen wir uns das Beispiel für drei ONNX-Modelle an.

ie Mehrheit der Stimmen wird mit der Formel <Gesamtzahl der Stimmen>/2 + 1 berechnet. Bei einer Gesamtzahl von 3 Stimmen beträgt die Mehrheit 2 Stimmen. Dies ist eine so genannte „harte Abstimmung“.

Das Testergebnis mit den gleichen Einstellungen.

Hard-Voting-Testergebnisse

Erinnern wir uns an die Arbeit aller drei Modelle getrennt, nämlich die Anzahl der profitablen und unprofitablen Geschäfte. Erstes Modell — 11 : 3, 2. — 6 : 1, 3. — 16 : 10.

Es scheint, dass wir das Ergebnis mit Hilfe der harten Abstimmung verbessert haben — 16 : 4. Aber natürlich müssen wir uns die Berichte und Testdiagramme insgesamt ansehen.

Autor: MetaQuotes

 
Sehr nützlicher Artikel!

Wird ONNX Version 1.13.0 oder 1.14.0 von MT5 verwendet?
 

Das ist wirklich sehr interessant, vielen Dank.

In der angehängten ML-Datei ONNX.eurusd.D1.30.class.Training.py zu dem Artikel gibt es die folgenden Codezeilen (Zeile 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

Was ist die Logik hinter der oben hervorgehobenen Zeile?

Die Klassifizierung basiert auf dem Unterschied zwischen dem "ma_slow" der ersten Probe(x[0][-1]) und dem "close" des neuen Ziels(w.iloc[-1]['close']). Außerdem gäbe es einen Zeitunterschied von'sample_size-1'.

Darüber hinaus:

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

Müsste das nicht y = 0,0,1 sein? D.h. ein Verkaufssignal.

Gleiches gilt für ONNX.eurusd.D1.10.class.Training.py in def collect_dataset(), Zeile 45-47:

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

        delta = x[3][-1] - w.iloc[-1]['close']
Wie? Die Klassifizierung basiert auf dem Unterschied zwischen dem 'close' des vierten Samples(x[3][-1]) und dem 'close' des neuen Ziels(w.iloc[-1]['close']); und es gäbe einen Zeitunterschied von'sample_size-4'.
 
Xiaoyu Huang #:
Sehr nützlicher Artikel!

Wird ONNX Version 1.13.0 oder 1.14.0 von MT5 verwendet?
Kann nicht scheinen, um die Informationen zu finden. Gibt es einen Grund für die Frage?