Was ist Walk Forward Analysis Walk forward Anaylsis ist der Prozess der Optimierung eines Handelssystems mit einem begrenzten Satz von Parametern, und dann das Testen der besten optimierte Parameter-Set auf Out-of-Probe-Daten. Dies ist ähnlich, wie Sie Ihre Experten-Berater im Live-Handel verwenden würde. Die Grundsätze der Walk-forward-Analyse wurden zuerst im Buch Die Bewertung und Optimierung von Handelsstrategien von Robert Pardo beschrieben. Um eine Walk-Forward-Analyse in MetaTrader durchzuführen, optimieren Sie zunächst den Expertenratgeber im Strategy Tester. Wählen Sie dann auf der Registerkarte Optimierungsergebnisse das profitabelste Ergebnis aus und führen Sie einen Backtest über einen Zeitraum unmittelbar nach dem Optimierungszeitraum durch. Das Enddatum des Optimierungszeitraums entspricht dem Startdatum des Testzeitraums. Dieser Vorgang wird wiederholt, bis eine zufriedenstellende Probengröße erreicht ist. Wenn der Fachberater im Test, im Vergleich zu den Optimierungsergebnissen, gut abschneidet, kann man daraus schließen, dass der Expertenberater voraussichtlich im Livehandel profitabel sein wird. Wenn der Fachberater hingegen im Test schlecht arbeitet, müssen entweder die Optimierungsparameter oder die Länge der Test - und Optimierungsperioden angepasst werden. Wenn nach vielen Versuchen der Gutachter nach wie vor keine gute Leistung bei der Prüfung hat, kann man schließen, dass das Handelssystem unrentabel ist. Die Animation nach rechts veranschaulicht die Vorgehensweise bei der Vorwärtsbewegung. Eine Optimierung wird über einen längeren Zeitraum (die In-Sample-Daten) durchgeführt, und dann wird der optimierte Parametersatz über eine nachfolgende kürzere Periode (die Out-of-Sample-Daten) getestet. Die Optimierungs - und Testperioden werden nach vorne verschoben und der Vorgang wiederholt, bis eine geeignete Probengröße erreicht ist. Quelle Ein Beispiel für eine Walk Forward-Analyse Hier können wir ein realistisches Beispiel anführen: Wir würden eine Vor-Ort-Analyse auf einem Expertenratgeber unter Verwendung von EURUSD M30 durchführen. Optimieren Sie diesen Expertenberater über einen Zeitraum von 120 Tagen. Weve gewählt die 3 oder 4 wichtigsten Parameter zu optimieren, um nicht zu über-Optimierung oder Kurve passen die Ergebnisse. Auch weniger Parameter bedeuten einen schnelleren Test. Nun wählen Sie die profitabelste Ergebnis, und Backtest diese Parameter über einen Zeitraum von 30 Tagen unmittelbar nach dem Optimierungszeitraum. Es wird empfohlen, eine Testphase von etwa 25 der Länge des Optimierungszeitraums zu verwenden. Sobald wir unsere Ergebnisse aufgenommen haben, bewegen wir die nächste Optimierungs - und Testperiode um 30 Tage. Nach 12 aufeinanderfolgenden Runden der Optimierung und Prüfung, haben auch ein Jahr im Wert von Walk forward Analyse-Daten. Wir vergleichen den durchschnittlichen täglichen Gewinn für die Optimierungsperioden mit dem durchschnittlichen täglichen Gewinn für die Testperioden. Dies wird uns eine Berechnung genannt Walk forward Effizienz Verhältnis. Ein Walk-forward-Wirkungsgrad größer als 0,5 ist ein sehr gutes Ergebnis. Das nennen wir ein robustes Handelssystem. Ein Fachberater ist jedoch handelbar, solange er über mehrere Testperioden hinweg konsistent profitabel ist. Wenn der Effizienzgrad der Vorwärtsbewegung negativ ist, dann bedeutet dies, dass die Expertenberater nicht in Bezug auf ihre Optimierungsergebnisse gut funktionieren. Selbstverständlich können Sie eine MetaTraders Strategy Tester-Analyse manuell durchführen. Aber der Prozess ist langwierig, zeitraubend und fehleranfällig. Dies ist, wo die Walk Forward Analyzer Software kommt in. Das Programm wird automatisch durchführen eine Walk forward Analyse mit MetaTrader Strategy Tester über einen längeren Zeitraum mit nur wenigen Einstellungen durch den Benutzer zur Verfügung gestellt. Walk-Forward-Optimierungsbibliothek für MetaTrader 4: User Guide Rolling-Forward-Optimierung Sobald Sie WFO-Bibliothek in EA (der Header ist unten angebracht) enthalten, Ansatz ist wie folgt. Setup-Optimierung für einen gesamten gewünschten Zeitraum (sagen, 2001-2015 auf D1 Zeitrahmen). Als nächstes wählen Sie die Optimierungsfenstergröße und die Walk-Forward-Schrittweite als Meta-Parameter wfowindowSize und wfostepSize, die von der Bibliothek bereitgestellt werden. Beide können aus einer vordefinierten Liste (Jahr, Halbjahr, Quartal, Monat, Woche, Tag) ausgewählt werden, aber die Schrittgröße sollte eine geringere Zeitspanne als das Fenster sein. Zum Beispiel können wir jährliche Fenster und vierteljährlichen Schritt zu wählen. Als nächstes sollten Sie für den Tester angeben, wie viele Vorwärtsschritte Sie über wfostepOffset ausführen möchten - dies ist ein weiterer Meta-Parameter und sein interessantester, weil er in die Optimierung einbezogen werden muss. Für wfostepOffset-Optimierung sollten Sie immer 1 als Inkrement verwenden, da es eine nahtlose Intergation aller Vorwärtsschritte in den konsolidierten Forward-Test gewährleistet. Alle Meta-Parameter stammen aus dem Header der Bibliothek. Aufgrund der Testerbeschränkung kann MQL den Endpunkt der Optimierung nicht vorher ermitteln, deshalb sollte sich der Benutzer selbst berechnen, wie viele Schritte in die gesamte Region passen. Der Zeitraum 2001-2015 umfasst ein vollständiges Jahr (Fenster), und der Rest wird durch Vorwärtsschritte abgedeckt, die (15 - 1) Jahre multipliziert mit 4 Quartalen 144 56. So sollte der Benutzer die Optimierung des wfostepOffset-Meta-Parameters in der Region 0 - 56 mit Schritt 1. Streng genommen, wenn Sie den Endwert auf 56 setzen, wird es das 1. Quartal 2016 sein. Dies geschieht, weil in dieser WFO-Implementierung der Vorwärts-Test außerhalb des Optimierungsfensters getroffen wird. In unserem Beispiel, da das 1. Quartal 2016 ist, können wir den Überlauf vernachlässigen. Dies kann jedoch wichtig werden, wenn Sie WFO bis zum letzten bekannten Datum ausführen. In diesem Fall sollte der Benutzer darauf achten, keine weiteren Schritte vorzunehmen. Auch diese Nuance existiert aufgrund der Tatsache, dass MetaTrader-Tester nicht erlauben uns zu wissen, endet Prüfdatum aus dem Experten getestet. Der oben beschriebene Aufbau ist als Rolling-Walk-Forward-Tests bekannt. Die Bibliothek unterstützt auch Cluster-Analyse und verankerte Modi, die im Folgenden behandelt werden. Allgemeine Anweisungen Bevor Sie mit der Optimierung beginnen, öffnen Sie den ersten Reiter im Experteneigenschaften-Dialog des Testers und setzen Sie den Parameter Optimiert auf Benutzerdefiniert. Die aktuelle Bedeutung des benutzerdefinierten Parameters sollte mit dem speziellen Meta-Parameter der Bibliothek - wfoestimation - auf der zweiten Registerkarte mit Eingaben ausgewählt werden. Vergewissern Sie sich außerdem, dass Sie die Felder Use date flag und From To auf der Registerkarte Tester-Einstellungen verwenden. Auf der Registerkarte mit Optimierungsergebnissen (leider ist die Registerkarte nur zugänglich, wenn mindestens einmal Optimierung gestartet wurde) finden Sie im Kontextmenü die Option Nützliche Ergebnisse überspringen und deaktivieren - dies ist erforderlich. Natürlich sollte der Anwender auch die Optimierung für alle anderen tatsächlichen Parameter des EA ermöglichen. Wenn die Anzahl der Parameter groß ist, kann man den genetischen Algorithmus aktivieren, aber dies hat einige Nachteile, die unten beschrieben werden. Wenn alles vorbereitet ist, starten Sie die Optimierung und warten. Als Ergebnis erhalten youll endlich eine csv-Datei mit allen Performance-Schätzern für jeden Lauf (Gewinn, Profit-Faktor, Anzahl der Trades und andere Werte einschließlich eines benutzerdefinierten OnTester-Wert, alle für optimierte und Forward Perioden in der gleichen Zeile) . Außerdem erhalten Sie eine Liste der globalen Variablen, die die besten Fälle (Indizes von Läufen mit gewinnenden Parametersätzen) für alle 56 Vorwärtsläufe zeigen (tatsächlich gibt es 57, wenn Sie 0 als Startindex und 56 als letztes angeben). Der Typ des Hauptschätzers (der während der Optimierung verwendet wird und anzeigt, ob EA gut oder schlecht durchgeführt wird) wird durch eine andere spezielle Eingabe-Meta-Parameter-Wofestimierung ausgewählt, die von der WFO-Bibliothek bereitgestellt wird. Sie können zwischen Gewinnbetrag, Gewinnfaktor, Sharpe-Ratio, Drawdown-Prozentsatz (invertiert, auf Balance-Kurve berechnet) oder benutzerdefinierten Ausdruck wählen, der alle diese Werte kombiniert (siehe Formelreferenz für Details). Außerdem werden 2 universelle Einbettungsschätzer (lose und strict) zur Verfügung gestellt: ihre Formeln umfassen Sharpe, Gewinnfaktor, Gewinnbetrag und Anzahl der Trades. Der Unterschied zwischen losen und strengen Variante ist, dass erstere alle Aufträge berücksichtigt, während der spätere schließt diejenigen mit Gewinn größer als durchschnittlichen Single-Profit plus drei Sigma. Mit anderen Worten, die strenge Methode entfernt Glück Ausreißer aus der Balance vor Berechnung der Schätzer. An dieser Stelle können Sie die Ergebnisse analysieren, indem Sie ein spezielles WFR-Skript ausführen, das die csv-Datei und die globalen Variablen analysiert und eine HTML-Seite mit einer Zusammenfassung erstellt. Hinweis: Der Forward-Test wird als Fortsetzung des entsprechenden Optimierungslaufs berechnet. Mit nur auf In-Probe-Daten optimierten Parametern. Mit anderen Worten, EA fährt mit dem Trading außerhalb des Optimierungsfensters während der nächsten Vorwärtsschrittperiode fort, mit dem aktuellen Saldo (nicht anfängliche Einzahlung) und die Leistungsschätzer werden von der Bibliothek separat für die Optimierungs - und Testteile berechnet. Optimierungsteilwerte werden über OnTester-Handler zurück an den Tester zurückgegeben. Nach Abschluss der Optimierung haben wir Leistungswerte für alle Optimierungsfenster (mit allen Parametersätzen) und alle entsprechenden Vorwärtsschritte. Mit diesen Werten wählt der Prüfer wie üblich ein Bestes aus (für jedes Fenster) und wir kennen das Ergebnis des entsprechenden Vorwärtsschritts sofort. Dies geschieht, weil sonst EA die Optimierung und Vorwärtsprüfung in getrennten Läufen durchführen würde, ist es unmöglich, diese 2 Läufe durch MQL-API-Einschränkungen im Standard-MateTrader4-Tester zu identifizieren und zu binden. Aufgrund dieser Nuance ist es streng empfohlen, eine konstante Menge während der Optimierung zu verwenden. Genetischer Algorithmus Sie können genetischen Algorithmus zu aktivieren, wenn Sie wollen, aber es erfordert, dass Sie WF globalen Variablen vor jeder Optimierung - entweder manuell oder mit dem Reporter-Skript aufzuräumen. Wenn Genetik nicht verwendet wird, können Sie wfosetGVAutomaticCleanup (true) aus Ihrem Code aufrufen, und die Bibliothek bereinigt ihre globalen Variablen für Sie vor jeder Optimierung. Leider bietet MQL API keine Mittel, um zu überprüfen, ob die Genetik aktiviert ist, deshalb ist es unmöglich, wfosetGVAutomaticCleanup automatisch zu wechseln. Tun Sie es in Ihrem Code entsprechend. Ab Version 1.2 kann man die Funktion wfosetCleanUpTimeout verwenden. Beachten Sie auch, dass der genetische Algorithmus viele Kombinationen von Eingabeparametern überspringt, einschließlich spezifischer Paare von (Fenstergrößen-Größe) und Rollschritten, so dass einige Vorwärts-Tests nicht verfügbar sein können. Ein weiterer Nachteil des genetischen Algorithmus liegt in seiner schnellen Suche, die suboptimal ist und somit niedrigere Werte für die Daten in der Probe liefert als eine direkte Optimierung. Daher kann die Effektivität der Vorwärtsbewegung überoptimistisch wirken (dh eine einzige Genetische Optimierung übergeben In-Probe-Daten ohne WF-Bibliothek übertrifft spezifische Walk-Forward-genetische Optimierung laufen auf dem gleichen Fenster, aber Out-of-Sample-Gewinn bleiben im Durchschnitt die gleichen, da gefundene Parameter sind immer suboptimal in wechselnden Zukunft). Bei der direkten Optimierung gibt es kein solches Problem. Sie können Kontrollpunkte Methode verwenden - es scheint schnell und ausreichend genug für lang laufende Strategien. Dies ist ein guter Kompromiss zwischen offenen Preisen und allen Tick-Modi. Offene Preise gelten nur für Roboter, die speziell für den Handel bei Baröffnung entwickelt wurden, während jeder Tick-Modus zu langsam mit Walk-Forward-Optimierung sein kann. Beachten Sie, dass die Vorwärtsoptimierung durch zusätzliche Optimierungs-Meta-Parameter realisiert wird: wfostepOffset, wfocustomWindowSizeDays, wfocustomStepSizePercent, die eine Vielzahl zusätzlicher Tester-Pässe erzeugen können. Clustered-Walk-Forward-Optimierung Als erweiterter Fall von WFO kann auch eine sogenannte Cluster-Analyse verwendet werden. Es unterstützt über 2 weitere Meta-Parameter der Bibliothek - wfocustomWindowSizeDays und wfocustomStepSizePercent. Mit dem Sie die Stabilität der Vorderseite überprüfen können, während die Optimierungsfenstergröße und die Vorwärtsschrittgröße geändert werden. WfocustomStepSizePercent wird in Prozenten der Fenstergröße angegeben. Dieser Modus dient dazu, herauszufinden, ob geeignete EA-Setups für verschiedene Meta-Parameter existieren und entscheiden, welches Fenster und welche Schrittgröße Sie wählen sollen. Das Ändern des Optimierungsfensters und der Schrittgröße kann die Robustheit von EA unterstützen, aber nicht unbedingt beweisen. Unsere Aufgabe ist es, zu bestätigen, dass die Leistung nicht so stark abnimmt und dass keine optimierten Meta-Parameter von WFO gefunden werden, da diese Meta-Parameter auf Meta-Optimierung und Meta-Forward-Tests auf der nächsten Metaebene liegen , Die eine endlose Schleife von meta-metas bildet und daher nicht berücksichtigt wird. Ohne dies ist die Suche nach der optimalen Fenstergröße und dem Vorwärtsschritt ähnlich wie das Überfittern (cheeting) auf einer Metaebene, wo der ausgewählte Teil der Historie für WFO in Meta-Daten und Meta-Test außerhalb des Beispiels fehlt. Darüber hinaus ist es anstelle der Veränderung der Fenstergröße (und daher der Änderung der Anzahl von Läufen) auch möglich, die Anzahl der Läufe auf Kosten der Berücksichtigung einer tieferen Geschichte zu erhöhen. Verankerte Walk-Forward-Optimierung WFO bietet einen zusätzlichen Optimierungsmodus, bei dem die Startposition des Optimierungsfensters intakt bleibt, aber die Fenstergröße in Schritten erhöht wird, die gleich dem Vorwärtsschritt sind. Dies ist ein sogenannter verankerter Walk-Forward. Für diesen Modus muss die Schrittgröße als Wert aus der vordefinierten Liste der gemeinsamen Perioden angegeben werden (nicht in Prozent), und die Fenstergröße sollte durch wfocustomWindowSizeDays meta-Parameter mit einem Schritt gleich der ausgewählten Periodenlänge in Tagen optimiert werden. Dies ist so, weil sonst die relative Länge der Schritte bei jedem Vorwärtsdurchlauf variieren und mit benachbarten Durchgängen überlappen würde. Zum Beispiel kann man wfocustomWindowSizeDays von 60 bis 150 mit dem Schritt 30 optimieren und dann monatliche Konstante als wfostepSize-Wert (dessen gleich 30 auswählen, so dass jedes Mal, wenn das Fenster um 30 Tage wachsen wird, wird es zusätzlich schlucken genau nach vorne testen Aus dem vorherigen Durchlauf, und alle Forward-Tests werden nahtlos einen Fluss nacheinander bilden). Wenn Sie die Optimierung zu Beginn des Jahres 2016 starten, wird eine derartige Verankerungsoptimierung für März (optimiert im Januar und Februar), April (optimiert im Januar, Februar und März), Mai (optimiert im Januar, Februar, März und April), vorbereitet ), Und schließlich Test für Juni (optimiert auf Januar, Februar, März, April und Mai). Details finden Sie im Abschnitt "How To" der Dokumentation.
No comments:
Post a Comment