Calendar-Based Backtesting: an Event-Driven Trading EA - Bibliothek für den MetaTrader 5
Der Code ist zum besseren Verständnis mit Kommentaren versehen. Diese Beschreibung erläutert die Hauptidee und die Möglichkeiten zur Verwendung/Wiederverwendung des Codes.
Dieser Rahmen besteht aus drei Hauptkomponenten:
1. CalendarRetriever.mq5 (Skript) - Dieses Skript holt vergangene Wirtschaftsnachrichten ab und speichert sie in Dateien im Ordner "Common" Ihres Terminals. Diese Dateien werden später beim Backtesting vom Expert Advisor gelesen. Das Skript benötigt zwei Eingabeparameter: - Start Date - Das Datum, ab dem vergangene Nachrichtenereignisse abgerufen werden sollen.
- End Date - Das letzte Datum, für das Nachrichtenereignisse gespeichert werden sollen.
Nach dem Ausführen dieses Skripts wird im Verzeichnis "Common" des Terminals ein Ordner "Calendar" erstellt, in dem die folgenden Textdateien angelegt werden: - Countries.txt - Enthält Informationen über jedes MQLCalendarCountry
- Events.txt - Speichert Ereignisdetails wie Name, Auswirkung und countryid.
- News.bin - Enthält historische Werte von Nachrichtenereignissen, einschließlich Zeitstempel.
2. CalendarFile.mq (Include File) - Diese Datei bietet einen strukturierten Weg zur Verarbeitung von Nachrichtendaten im Expert Advisor. Sie enthält zwei Hauptklassen: - CalendarFileWriter - Wird intern vom Skript zum Speichern von Nachrichtendaten verwendet.
- CalendarFileReader - Wird im Expert Advisor zum Lesen und Verarbeiten von Nachrichtendaten verwendet. Sie enthält Funktionen zum Laden von Ereignisdaten und zum Verfolgen anstehender Nachrichten in der Funktion OnTick.
3. NewsBacktest.mq5 (Expert Advisor) - Dieser EA verwendet die gespeicherten Daten, um Echtzeit-Nachrichtenbedingungen im Strategietester zu simulieren. Er liest die gespeicherten Nachrichtendaten mit Hilfe der Load-Funktionen und führt die Trades entsprechend aus.
So verwenden Sie das Framework:
-
Führen Sie das CalendarRetriever-Skript aus: Wählen Sie das Symbol, das Sie backtesten möchten, und führen Sie das CalendarRetriever.mq5-Skript mit dem angegebenen Start- und Enddatum aus.
-
Der Expert Advisor
- Der EA verwendet die CalendarFileReader-Klasse, um die Daten mit diesen Funktionen zu laden:
- LoadEvents() - Lädt die Ereignisdetails.
- LoadCountries() - Lädt Länderinformationen.
- LoadValues() - Lädt historische Nachrichtenwerte.
- Anschließend werden die Nachrichtenereignisse in der Funktion OnTick verarbeitet, um festzustellen, wann ein Nachrichtenereignis eintritt. Verwenden Sie Propagate() zur Vorhersage und Track() zur Reaktion.
- Die Funktion CalendarFileReader.Propagate() setzt den nächsten Index auf das nächste anstehende Ereignis, dies sollte bei jedem Tick aufgerufen werden.
- Die Funktion CalendarFileReader.Track() gibt true zurück, wenn ein Nachrichtenereignis stattgefunden hat und setzt den letzten Index auf dieses Ereignis. Sie wird auch in der Funktion OnTick() aufgerufen, aber das Ergebnis sollte überprüft werden.
- Der EA verwendet die CalendarFileReader-Klasse, um die Daten mit diesen Funktionen zu laden:
-
Backtest der Strategie Öffnen Sie den Strategy Tester in MetaTrader 5, wählen Sie NewsBacktest.mq5 und führen Sie den Backtest im visuellen Modus aus
So passen Sie es an Ihre eigenen News-basierten Strategien an:
Dieses Framework ist so konzipiert, dass es flexibel ist und es Händlern ermöglicht, ihre eigenen Strategien rund um Wirtschaftsnachrichten zu entwickeln. Im Folgenden finden Sie einige Möglichkeiten, wie Sie es anpassen können:
- Passen Sie die Logik der Ereignisfilterung in OnTick() an, um auf bestimmte Nachrichtenarten zu reagieren (z.B. Handel nur nach NFP- oder CPI-Veröffentlichungen).
- Ändern Sie die Logik der Orderausführung, um verschiedene Strategien zu implementieren, z. B. Fading der anfänglichen Bewegung anstelle von Breakout Trading.
- Verwenden Sie zusätzliche Indikatoren neben Nachrichtenereignissen, um Einstiegssignale zu verfeinern.
- Ändern Sie die Verfallszeit von schwebenden Aufträgen je nach dem Ausmaß der Auswirkungen des Ereignisses.
Diese Lösung macht das Backtesting von nachrichtenbasierten Strategien so realistisch wie möglich im Rahmen der Einschränkungen von MetaTrader 5. Durch den Abruf historischer Nachrichtendaten und die anschließende Simulation ihrer Auswirkungen auf den Markt können Händler wertvolle Erkenntnisse darüber gewinnen, wie sich ihre Strategien unter Live-Bedingungen verhalten würden.
Für ein einfacheres und besseres Verständnis sehen Sie sich bitte mein Video dazu an:
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/55630