Diskussion zum Artikel "Verwendung des Algorithmus PatchTST für maschinelles Lernen zur Vorhersage der Kursentwicklung in den nächsten 24 Stunden"

 

Neuer Artikel Verwendung des Algorithmus PatchTST für maschinelles Lernen zur Vorhersage der Kursentwicklung in den nächsten 24 Stunden :

In diesem Artikel wenden wir einen relativ komplexen Algorithmus eines neuronalen Netzes aus dem Jahr 2023 namens PatchTST zur Vorhersage der Kursentwicklung der nächsten 24 Stunden an. Wir werden das offizielle Repository verwenden, geringfügige Änderungen vornehmen, ein Modell für EURUSD trainieren und es zur Erstellung von Zukunftsprognosen sowohl in Python als auch in MQL5 anwenden.

Ich stieß zum ersten Mal auf einen Algorithmus namens PatchTST, als ich begann, mich mit den KI-Fortschritten im Zusammenhang mit Zeitreihenvorhersagen auf Huggingface.co zu beschäftigen. Wie jeder, der mit großen Sprachmodellen (LLMs) gearbeitet hat, weiß, hat die Erfindung von Transformatoren die Entwicklung von Tools für die Verarbeitung natürlicher Sprache, Bilder und Videos entscheidend beeinflusst. Aber was ist mit Zeitreihen? Ist es etwas, das einfach zurückgelassen wird? Oder findet der Großteil der Forschung einfach hinter verschlossenen Türen statt? Es hat sich gezeigt, dass es viele neuere Modelle gibt, die Transformatoren erfolgreich für die Vorhersage von Zeitreihen einsetzen. In diesem Artikel werden wir uns eine solche Implementierung ansehen.



Das Beeindruckende an PatchTST ist, wie schnell ein Modell trainiert werden kann und wie einfach es ist, das trainierte Modell mit MQL zu verwenden. Ich gebe offen zu, dass ich mit dem Konzept der neuronalen Netze noch nicht vertraut bin. Aber als ich diesen Prozess durchlief und die in diesem Artikel beschriebene Implementierung von PatchTST für MQL5 in Angriff nahm, hatte ich das Gefühl, dass ich einen riesigen Sprung nach vorne gemacht habe, was das Lernen und Verstehen der Entwicklung, Fehlersuche, Schulung und Verwendung dieser komplexen neuronalen Netzwerke angeht. Es ist, als würde man ein Kind, das gerade erst laufen lernt, in eine Profifußballmannschaft stecken und von ihm erwarten, dass es im Finale der Fußballweltmeisterschaft das Siegestor schießt. 

Autor: Shashank Rai

 
Hallo, können Sie besser erklären, was diese Balken sind, dass ich in MT5 sehen? ok sie haben zwei Farben grün und rot, aber was bedeuten sie? Danke
 
Federico Benetti #:
Hallo, können Sie besser erklären, was diese Balken sind, dass ich in MT5 sehen? ok sie haben zwei Farben grün und rot, aber was bedeuten sie? Danke

Die grünen und roten Balken werden von diesem Codeschnipsel generiert:

ObjectSetInteger(0, obj_name, OBJPROP_COLOR, close > open ? clrGreen : clrRed);

Grün bedeutet also, dass das Modell davon ausgeht, dass der Schlusskurs höher sein wird als der Eröffnungskurs (ähnlich wie ein grüner Balken auf einem Candle-Stick-Chart), und zwar zu diesem Zeitpunkt. Rot bedeutet, dass der Schlusskurs in dieser Stunde niedriger sein wird als der Eröffnungskurs.

Ich habe das Modell gestern zum Beispiel für einige andere Paare trainiert. Ich habe den Indikator verwendet, den ich im Chart zeige, aber das ONNX-Modell wurde für USDJPY und AUDUSD trainiert. Heute Morgen habe ich auf der Grundlage der Vorhersage des Modells für USDJPY einen 15R-Handel getätigt. Ich habe die Charts nicht einmal wirklich beobachtet, während das alles passierte. Ich habe den Trade einfach am Nachmittag nach Abschluss des Trainings getätigt und die Position über Nacht laufen lassen (ich habe den Swap bezahlt). Nach meiner bisherigen Erfahrung kann ich sagen, dass man der Richtung, die das Modell vorhersagt, im Allgemeinen vertrauen kann. Achten Sie auch auf etwaige Muster, die Sie erkennen können, z. B. würden mehr aufeinander folgende rote Balken im Diagramm darauf hinweisen, dass das Modell von einem Kursrückgang ausgeht. Mehr grüne Balken würden darauf hindeuten, dass das Modell von steigenden Kursen ausgeht.

Wie Sie sehen, habe ich auch bei AUDUSD aufgrund der Modellvorhersage etwa 1R verloren, es ist also nicht perfekt. Sie müssen immer noch Ihre anderen Fähigkeiten wie Angebot und Nachfrage Zonen für die Einstellung SL und TP, Makro-Fundamentaldaten, Positing Sizing und Risikomanagement usw. verwenden. Meiner Meinung nach gibt Ihnen die Verwendung von trainierten PatchTST-Modellen viel mehr Präzision und Zuversicht bei der Platzierung dieser Trades zur richtigen Tageszeit oder zumindest in der richtigen Session (Asien, London oder NY). Der Screenshot unten stammt aus einer Bewertung einer Prop-Firma, an der ich gerade arbeite.

 
Hallo, das ist eine tolle Arbeit!

Da ich mich für ML und Trading interessiere und in meiner Freizeit meine eigenen Algos schreibe, ist das eine interessante Idee!

Ich habe bemerkt, dass Sie auch LSTM ausprobiert haben. Welches der beiden Modelle hatte Ihrer Meinung nach die bessere Gewinnrate?

Haben Sie auch versucht, das Modell über einen Monat und in verschiedenen Zeitrahmen zu trainieren?

Ich denke, wir könnten auch versuchen, Modelle zu kombinieren, z.B. für h1 und m15, und eine Gesamtvorhersage für die 2 zu erhalten?

Oder versuchen Sie, einen Scalper auf M1 zu erstellen, der die Vorhersage als Filter für 10 Bars im Voraus verwendet, wenn 7/10 Bars grün sind - kaufen
Wenn 5-6/10 dann ist es ein Bereich und kein Handel?

Nur mal so als Anregung :)

Vielen Dank für den Austausch:)
 
Rohin Stirling Dufty #:
Hallo, das ist eine tolle Arbeit!

Da ich mich für ML und Trading interessiere und in meiner Freizeit meine eigenen Algos schreibe, ist das eine interessante Idee!

Ich habe bemerkt, dass Sie auch LSTM ausprobiert haben. Welcher der beiden Algorithmen hatte Ihrer Meinung nach die bessere Gewinnrate?

Haben Sie auch versucht, das Modell über einen Monat und in verschiedenen Zeitrahmen zu trainieren?

Ich denke, wir könnten auch versuchen, die Modelle zu kombinieren, z. B. für h1 und m15, um eine Gesamtvorhersage für die beiden zu erhalten.

Oder versuchen Sie erstellen einen Scalper auf M1, mit der Vorhersage als Filter 10 Bars voraus, wenn 7/10 Bars sind grün - kaufen
Wenn 5-6/10 dann ist es ein Bereich und kein Handel?

Nur mal so als Anregung :)

Danke fürs Teilen:)

Vielen Dank für Ihr Interesse und Ihre aufmerksamen Kommentare zum ML-Handelsalgorithmus! Ich freue mich, dass Sie die Idee interessant finden. Lassen Sie mich Ihre Punkte nacheinander ansprechen:

  1. LSTM vs. PatchTST Leistung:
    • Ich fand, dass PatchTST bei der Vorhersage von Trends genauer ist.
    • LSTM schien bei Konsolidierungen besser abzuschneiden.
    • Insgesamt hatte PatchTST in meinen Tests eine etwas bessere Gewinnrate.
  2. Trainingszeitraum und Zeitrahmen:
    • Ich habe mit dem Training in verschiedenen Zeitrahmen experimentiert.
    • Der 1-Stunden-Zeitrahmen scheint meiner Erfahrung nach am besten zu funktionieren.
    • Ich habe nicht speziell versucht, nur über einen Zeitraum von einem Monat zu trainieren, da längere historische Daten in der Regel robustere Modelle ergeben.
  3. Kombinieren von Modellen und Zeitrahmen:
    • Ihre Idee, Modelle für verschiedene Zeitrahmen (z. B. H1 und M15) zu kombinieren, ist interessant.
    • Dabei ist ein Kompromiss zu berücksichtigen: Die Verwendung kürzerer Zeitrahmen erfordert mehr Datenpunkte und erhöht die Trainingszeit exponentiell.
    • Bei Verwendung eines 15-Minuten-Zeitrahmens werden beispielsweise viermal so viele Balken wie bei einem 1-Stunden-Zeitrahmen für ein entsprechendes Training benötigt, wodurch sich auch der Prognosehorizont um den Faktor 4 erhöht.
  4. Scalper-Strategie auf M1:
    • Ihr Vorschlag, einen Scalper auf dem M1-Zeitrahmen zu entwickeln, der Vorhersagen als Filter verwendet, ist kreativ.
    • Die Idee, 7/10 grüne Balken für Käufe und 5-6/10 für Schwankungen zu verwenden, ist ein guter Ausgangspunkt für eine Strategie.
    • Dieser Ansatz könnte möglicherweise falsche Signale reduzieren und das Einstiegs-Timing verbessern.
  5. Aktuelle Arbeit und künftige Richtungen:
    • Ich arbeite derzeit an einem dreistufigen Ansatz: a) Ein Modell zur Vorhersage der Preisentwicklung über einen 1-Wochen-Zeitrahmen b) Ein weiteres Modell für den 1-Tages-Zeitrahmen c) Ein drittes Modell für den 5-Minuten-Zeitrahmen
    • Dies sind alles verschiedene Modelle, die auf die jeweiligen Zeitrahmen zugeschnitten sind.
    • Ziel ist es, ein umfassenderes Handelssystem zu schaffen, das mehrere Zeithorizonte berücksichtigt.
  6. Zusätzliche Überlegungen:
    • Die Kombination von Vorhersagen aus mehreren Zeitrahmen und Modellen kann die Gesamtleistung der Strategie tatsächlich verbessern.
    • Es ist jedoch wichtig, die Komplexität in den Griff zu bekommen und eine Überanpassung zu vermeiden.
    • Backtesting und Forward-Testing mit Out-of-Sample-Daten sind unerlässlich, um die Wirksamkeit eines kombinierten Ansatzes zu überprüfen.

Nochmals vielen Dank für den Austausch Ihrer Ideen. Sie haben mir einige neue Perspektiven eröffnet, die ich bei meiner weiteren Arbeit berücksichtigen werde. Wenn Sie noch weitere Gedanken oder Fragen haben, können Sie diese gerne stellen!

 
dieser Code gibt Fehler. haben Sie eine Lösung?
# Step 11: Train the model
for epoch in range(num_epochs):
    model.train()
    total_loss = 0
    for batch_X, batch_y in train_loader:
        optimizer.zero_grad()
        batch_X = batch_X.to(device)
        batch_y = batch_y.to(device)

        outputs = model(batch_X)
        outputs = outputs[:, -pred_length:, :4]

        loss = loss_fn(outputs, batch_y)

        loss.backward()
        optimizer.step()
        total_loss += loss.item()

    print(f"Epoch {epoch+1}/{num_epochs}, Loss: {total_loss/len(train_loader):.10f}")
RuntimeError: permute(sparse_coo): number of dimensions in the tensor input does not match the length of the desired ordering of dimensions i.e. input.dim() = 
3 is not equal to len(dims) = 4
 
Alle Zahlenreihen werden mit einem normalen Taschenrechner berechnet. Wenn Sie wollen, können Sie alles in Excel eingeben oder einen MT-Inducer schreiben.
 

Vielen Dank für die Veröffentlichung eines so faszinierenden Artikels. Ich habe Erfahrung mit Python, habe mich aber noch nicht viel mit KI-Modellen beschäftigt.

Wäre es sinnvoll, das Trainingsskript zu ändern, wenn ich auf M1-Daten statt auf H1-Daten trainieren möchte? Vielen Dank!

seq_length = 10080  # 1 Woche M1-Daten

pred_length = 30     # Die nächsten 30 Minuten vorhersagen
 
Bogard_11 #:
Alle Zahlenreihen werden mit einem normalen Taschenrechner berechnet. Wenn Sie wollen, können Sie alles in Excel eingeben oder einen MT-Inducer schreiben.

Der PatchTST-Algorithmus ist in der Tat komplexer als einfache numerische Berechnungen, aber das ist so gewollt. Während Sie für grundlegende Berechnungen Excel oder einfachere Tools verwenden können, können neuronale Netze wie PatchTST komplexe Muster in Marktdaten erfassen, die mit einfacheren Analysemethoden möglicherweise nicht erkennbar sind. Die Stärke des Modells liegt in seiner Fähigkeit, diese Muster automatisch aus historischen Daten zu lernen.

 
ceejay1962 #:

Vielen Dank für die Veröffentlichung eines so faszinierenden Artikels. Ich habe Erfahrung mit Python, habe mich aber noch nicht viel mit KI-Modellen beschäftigt.

Wenn ich mit M1-Daten statt mit H1-Daten trainieren möchte, wäre das eine sinnvolle Änderung des Trainingsskripts? Vielen Dank!

Vielen Dank für Ihr Interesse! Ja, diese Änderungen an den Parametern würden im Prinzip funktionieren, aber es gibt ein paar wichtige Überlegungen beim Wechsel zu M1-Daten:

1. Datenmenge: Das Training mit 10080 Minuten (1 Woche) M1-Daten bedeutet, dass wesentlich mehr Datenpunkte verarbeitet werden als bei H1. Dies wird:

  • die Trainingszeit erheblich verlängern
  • Mehr Speicherplatz erforderlich
  • Möglicherweise ist GPU-Beschleunigung für effizientes Training erforderlich

2. Anpassungen der Modellarchitektur: In Schritt 8 des Modelltrainings und Schritt 4 des Vorhersagecodes sollten Sie möglicherweise andere Parameter anpassen, um die größere Eingabesequenz zu berücksichtigen:

class Config:
    def __init__(self):
        self.patch_len = 120  # Größere Felder für M1-Daten in Betracht ziehen
        self.stride = 120     # Schrittweite entsprechend anpassen
        self.d_model = 128    # Möglicherweise wird eine größere Modellkapazität benötigt.
3. Vorhersagequalität: Sie erhalten zwar detailliertere Vorhersagen, sollten sich aber bewusst sein, dass M1-Daten in der Regel mehr Rauschen enthalten. Möglicherweise sollten Sie mit verschiedenen Sequenzlängen und Vorhersagefenstern experimentieren, um die optimale Balance zu finden.
 
Mahammadjamil Kazi #:
Dieser Code gibt Fehler. Haben Sie eine Lösung?

Es tut mir leid, dass ich nicht früher geantwortet habe - haben Sie das Problem lösen können?