Diskussion zum Artikel "Automatisieren von Handelsstrategien in MQL5 (Teil 24): London Session Breakout System mit Risikomanagement und Trailing Stops"
Sehen Sie sich den neuen Artikel an: Automatisieren von Handelsstrategien in MQL5 (Teil 24): London Session Breakout System mit Risikomanagement und Trailing Stops.
Autor: Allan Munene Mutiiria
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.
Das zweite Problem ist, dass die Hoch-/Tiefstände und die Kauf-/Verkaufsstände im Bedienfeld nicht aktualisiert werden.
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.
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
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.
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.
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.
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.
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.
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.
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:
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!
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.








Neuer Artikel Automatisieren von Handelsstrategien in MQL5 (Teil 24): London Session Breakout System mit Risikomanagement und Trailing Stops :
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.
Autor: Allan Munene Mutiiria