Diskussion zum Artikel "Automatisieren von Handelsstrategien in MQL5 (Teil 24): London Session Breakout System mit Risikomanagement und Trailing Stops"

 

Neuer Artikel Automatisieren von Handelsstrategien in MQL5 (Teil 24): London Session Breakout System mit Risikomanagement und Trailing Stops :

In diesem Artikel entwickeln wir ein London Session Breakout System, das Ausbrüche vor der Londoner Handelsspanne identifiziert und schwebende Aufträge mit anpassbaren Handelsarten und Risikoeinstellungen platziert. Wir integrieren Funktionen wie Trailing Stops, Risiko-Ertrags-Verhältnisse, maximale Drawdown-Grenzen und ein Kontrollpanel für die Überwachung und Verwaltung in Echtzeit.

Die „London Session Breakout Strategy“ zielt auf die erhöhte Volatilität während der Londoner Markteröffnung ab, indem sie die in den Stunden vor der Londoner Eröffnung gebildete Preisspanne identifiziert und schwebende Orders platziert, um Ausbrüche aus dieser Spanne zu erfassen. Diese Strategie ist wichtig, da die Londoner Sitzung oft eine hohe Liquidität und Kursbewegungen aufweist, die zuverlässige Gewinnchancen bieten; sie erfordert jedoch ein sorgfältiges Risikomanagement, um falsche Ausbrüche und Drawdowns zu vermeiden.

Dies erreichen wir, indem wir die Höchst- und Tiefststände von „Vor-London“ berechnen, um Kauf- und Verkaufsstopps mit Offsets zu setzen, das Risiko-Ertrags-Verhältnis für Gewinnmitnahmen zu berücksichtigen, Trailing Stops für die Gewinnsicherung zu setzen und Limits für offene Geschäfte und den täglichen Drawdown zum Schutz des Kapitals festzulegen. Wir planen den Einsatz eines Kontrollpanels für die Echtzeitüberwachung und sitzungsspezifische Prüfungen, um sicherzustellen, dass nur innerhalb definierter Bandbreiten gehandelt wird, sodass das System an unterschiedliche Marktbedingungen angepasst werden kann. Kurz gesagt, hier ist eine Darstellung des Systems, das wir erreichen wollen.

STRATEGIEPLAN


Autor: Allan Munene Mutiiria

 
etherxp #:
Vielen Dank;)

Willkommen

 
Können Sie den Indikator hier hochladen?
 
hungxiro #:
Können Sie den Indikator hier hochladen?

Gehen Sie bitte den obigen Artikel durch.

 
Schöner Artikel. Ich danke Ihnen für Ihre Bemühungen!
 
Kyle Young Sangster #:
Schöner Artikel. Vielen Dank für Ihre Bemühungen!

Sicher. Danke für das freundliche Feedback. Gern geschehen.

 

Ich habe diesen Code heruntergeladen und mit dem Strategy Tester ausgeführt. Es findet den Bereich jeden Tag, und zeichnet die Box auf dem Diagramm. Allerdings nimmt es nicht einen Handel jeden Tag, (vorausgesetzt, dass es sollte). Im Laufe von 1,5 Monaten wurden nur 3 Trades getätigt.


Handelsbilanz


Das zweite Problem ist, dass die Hoch-/Tiefstände und die Kauf-/Verkaufsstände im Bedienfeld nicht aktualisiert werden.

Bedienfeld wird nicht aktualisiert


Die Hoch-/Tiefstwerte werden eindeutig im Diagramm angezeigt, daher nehme ich an, dass die Kauf-/Verkaufswerte auch im Diagramm angezeigt und im Kontrollpanel aktualisiert werden sollten, da sie direkt von den Hoch-/Tiefstwerten abgeleitet werden.

Welche Vorschläge haben Sie, damit dies korrekt funktioniert?

Vielen Dank im Voraus.

 
Kyle Young Sangster Strategy Tester ausgeführt. Es findet den Bereich jeden Tag, und zeichnet die Box auf dem Diagramm. Allerdings nimmt es nicht einen Handel jeden Tag, (vorausgesetzt, dass es sollte). Im Laufe von 1,5 Monaten hat er nur 3 Trades durchgeführt.



Das zweite Problem ist die hohe / niedrige Ebenen und die Kauf / Verkauf Ebenen im Bedienfeld nicht aktualisieren.


Die Hoch-/Tiefstwerte werden eindeutig auf dem Diagramm gefunden, also nehme ich an, dass die Kauf-/Verkaufswerte auch auf dem Diagramm angezeigt und im Kontrollpanel aktualisiert werden sollten, da sie direkt von den Hoch-/Tiefstwerten abgeleitet werden.

Welche Vorschläge haben Sie, um dies richtig zu machen?

Danke im Voraus.

Ich kann meinen Kommentar nicht bearbeiten; ich verwende Version 5.00, Build 5214 von MT5

 
Kyle Young Sangster Strategy Tester ausgeführt. Es findet den Bereich jeden Tag, und zeichnet die Box auf dem Diagramm. Allerdings nimmt es nicht einen Handel jeden Tag, (vorausgesetzt, dass es sollte). Im Laufe von 1,5 Monaten hat er nur 3 Trades durchgeführt.



Das zweite Problem ist die hohe / niedrige Ebenen und die Kauf / Verkauf Ebenen im Bedienfeld nicht aktualisieren.


Die Hoch-/Tiefstwerte werden eindeutig auf dem Diagramm gefunden, also nehme ich an, dass die Kauf-/Verkaufswerte auch auf dem Diagramm angezeigt und im Kontrollpanel aktualisiert werden sollten, da sie direkt von den Hoch-/Tiefstwerten abgeleitet werden.

Welche Vorschläge haben Sie, um dies richtig zu machen?

Danke im Voraus.

Hallo. Vielen Dank für die freundliche Antwort und das Feedback. In der Annahme, dass Sie den Artikel nie wirklich gelesen haben, haben Sie einfach "Plug and Play" gemacht; das Programm wurde für das AUDUSD-Symbol entwickelt, also testen Sie es zuerst dort, bevor Sie zu anderen Währungen übergehen. Das wird Ihnen ein tieferes Verständnis geben, da die Punkte angepasst werden müssen, wenn sich die Paare ändern. Sie sollten auch im Journal nach möglichen Hinweisen darauf suchen, warum das Programm nicht funktioniert, möglicherweise aufgrund falscher Einstellungen, aber anscheinend sollten die Punkte für AUDUSD und EURUSD fast gleich funktionieren. Zum Beispiel, Sie sind es auf EURUSD ausgeführt, so nehmen wir einen ähnlichen Test und versuchen zu sehen.

EURUSD TEST

Aus dem Bild, sehen, dass es einen Fehler gibt es. Dies würde dazu führen, dass der Test nicht korrekt ausgeführt wird.

Ein weiterer möglicher Grund wären unzuverlässige historische Daten, insbesondere wenn der Test mit sehr alten Daten durchgeführt wird. In Ihrem Beispiel gehen Sie von 2020 aus. Testen wir also für den Zeitraum, der in Ihrem Screenshot zu sehen ist.

SCHLECHTE HISTORISCHE DATEN

Nach dem Test vom Zeitraum 2020.01.01 bis 2020.01.31, technisch gesehen Januar 2020, wurde tatsächlich kein Handel getätigt. Wie Sie sehen können, ist die Datenqualität dort schlecht, 15% ist sehr unzuverlässig. Die roten Abschnitte enthalten überhaupt keine Daten, und wenn Sie mit dem Mauszeiger über sie fahren, sehen Sie den leeren Zeitraum. Testen wir nun die Daten vom Januar 2025 und sehen uns das an.

100 DATEN

Auf dem Bild können Sie sehen, dass wir bei 100%iger Qualität der Historie einige Trades haben, 19 davon in einem Monat.

Ausgehend von Ihrem Problem müssen Sie vielleicht die Qualität Ihrer Testdaten überprüfen, da wir bewiesen haben, dass die Standardeinstellungen für das EURUSD-Symbol gut funktionieren. Ich hoffe, das klärt die Dinge und ist hilfreich. Vielen Dank! Viel Spaß beim Handeln.

 
Kyle Young Sangster Strategy Tester ausgeführt. Es findet den Bereich jeden Tag, und zeichnet die Box auf dem Diagramm. Allerdings nimmt es nicht einen Handel jeden Tag, (vorausgesetzt, dass es sollte). Im Laufe von 1,5 Monaten hat er nur 3 Trades durchgeführt.



Das zweite Problem ist die hohe / niedrige Ebenen und die Kauf / Verkauf Ebenen im Bedienfeld nicht aktualisieren.


Die Hoch-/Tiefstwerte werden eindeutig auf dem Diagramm gefunden, also nehme ich an, dass die Kauf-/Verkaufswerte auch auf dem Diagramm angezeigt und im Kontrollpanel aktualisiert werden sollten, da sie direkt von den Hoch-/Tiefstwerten abgeleitet werden.

Welche Vorschläge haben Sie, um dies richtig zu machen?

Danke im Voraus.

Was Ihr zweites Problem anbelangt, so wird dies in dem Artikel erklärt, aber wenn man davon ausgeht, dass Ihr Problem von schlechten Testdaten ausgeht und einen Hinweis gibt, werden Sie, wenn der Bereich in der Berechnung ist, immer den Status "Berechnen..." sehen, bis genügend Daten vorhanden sind, um die Londoner Bereichssitzung oder die von Ihnen in den Eingaben definierte Sitzung festzulegen. Angenommen, Sie verwenden die Standardeinstellungen, wobei die Stunden vor London 3 sind, und Ihre Zeit aus dem gemeinsam genutzten Screenshot ist der 13. Februar, 2 Balken nach 22:00 Uhr, was 2*15 Minuten = 30 ist, was 22:30 ergibt, liegt also außerhalb der Bereichsberechnungszeit, so dass die Daten auf dem Panel noch sichtbar sein sollten, da der zuvor eingestellte Bereich noch im Spiel ist, es sei denn, die erste Sitzung wurde noch nicht gefunden, und wird gelöscht, wenn die Bereichsberechnung ab Mitternacht erreicht ist. Siehe unten:

const int PreLondonStartHour = 3; //--- Feste Startzeit vor London
const int PreLondonStartMinute = 0; //--- Feste Startminute vor London

Sehen Sie sich die Logik unten an, um den Bereich zu finden

//+------------------------------------------------------------------+
//| Handelsbedingungen prüfen und Aufträge erteilen |
//+------------------------------------------------------------------+
void CheckTradingConditions(datetime currentTime) {
   MqlDateTime timeStruct;            //--- Zeitstruktur
   TimeToStruct(currentTime, timeStruct); //--- Zeit umrechnen
   datetime today = StringToTime(StringFormat("%04d.%02d.%02d", timeStruct.year, timeStruct.mon, timeStruct.day)); //--- Heute erhalten

   datetime preLondonStart = today + PreLondonStartHour * 3600 + PreLondonStartMinute * 60; //--- Start vor London
   datetime londonStart = today + LondonStartHour * 3600 + LondonStartMinute * 60; //--- London Start
   datetime londonEnd = today + LondonEndHour * 3600 + LondonEndMinute * 60; //--- London Ende
   analysisTime = londonStart;        //--- Analysezeitpunkt festlegen

   if (currentTime < analysisTime) return; //--- Beenden, wenn vor der Analyse

   double preLondonRange = GetRange(preLondonStart, currentTime, PreLondonHigh, PreLondonLow, PreLondonHighTime, PreLondonLowTime); //--- Bereich abrufen
   if (preLondonRange < MinRangePoints || preLondonRange > MaxRangePoints) { //--- Bereichsgrenzen prüfen
      noTradeToday = true;            //--- Kein Handel einstellen
      sessionChecksDone = true;       //--- Prüfungen durchführen
      DrawSessionRanges(preLondonStart, londonEnd); //--- Zeichnen von Bereichen
      return;                         //--- Beenden
   }

   LondonRangePoints = preLondonRange; //--- Bereichspunkte festlegen
   PlacePendingOrders(PreLondonHigh, PreLondonLow, today); //--- Bestellungen aufgeben
   noTradeToday = true;               //--- Kein Handel einstellen
   sessionChecksDone = true;          //--- Prüfungen durchführen
   DrawSessionRanges(preLondonStart, londonEnd); //--- Zeichnen von Bereichen
}

Und wie sie festgelegt wird.

//+------------------------------------------------------------------+
//| Panel mit aktuellen Daten aktualisieren|
//+------------------------------------------------------------------+
void UpdatePanel() {
   string rangeText = "Range (points): " + (LondonRangePoints > 0 ? DoubleToString(LondonRangePoints, 0) : "Calculating..."); //--- Bereichstext formatieren
   ObjectSetString(0, panelPrefix + "RangePoints", OBJPROP_TEXT, rangeText); //--- Bereichstext aktualisieren

   //---

}

Obwohl wir das Jahr Ihres Tests nicht kennen, nehmen wir das Jahr 2025, wenn es wie in Ihrem Fall 2020 ist, haben wir keine Qualitätsdaten dafür, so dass wir in jedem Fall das Jahr 2025 verwenden und die Bereichsberechnung um Mitternacht beginnen sollte.

23:55

Auf dem Bild können Sie sehen, dass die Daten um 23:55 Uhr noch intakt sind. Wenn es jedoch Mitternacht ist, sollten wir zurücksetzen. Siehe unten.

MITTERNACHTSDATEN 00:00

Sie können sehen, dass wir die Daten um Mitternacht für die andere Bereichsberechnung zurücksetzen. Wenn die Bereichsberechnung abgeschlossen ist, kann die Visualisierung Ihnen helfen, zu erkennen, was wirklich passiert ist. In Ihrem Fall, in dem Sie die Standardeinstellungen verwenden, sehen Sie zum Beispiel die Balken von 0300 Uhr bis 0800 Uhr, weil wir das so definiert haben. Siehe unten:

BEREICH STUNDEN

Ich hoffe, das klärt die Dinge wieder. Sie können alles entsprechend Ihrem Handelsstil anpassen. Um die Probleme zu vermeiden, mit denen Sie konfrontiert sind, ist es ratsam, zuverlässige Testdaten zu verwenden. Vielen Dank!