Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Gold Dust - Experte für den MetaTrader 5

Veröffentlicht:
Vladimir Karputov
Ansichten:
2811
Rating:
(32)
Veröffentlicht:
2019.01.18 10:42
Gold Dust.mq5 (72.74 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Idee von Yury Reshetov

Autor des mq5-Codes - barabashkakvn

Gold Dust


Ein wenig Theorie

Viele automatisierte Handelssysteme neigen dazu, Ergebnisse zu optimieren und sich über anzupassen, d.h. sie sind in einem bestimmten historischen Zeitraum sehr gut optimiert, aber wenn Sie dieses optimierte System dann für den Handel auf einem Demo- oder Echtgeldkonto starten, kann es sich als Verlust erweisen, da die Handelssignale nahezu zufällig sind. Dies hängt mit dem nichtstationären Charakter von Finanzinstrumenten zusammen, d.h. ihre statistischen Merkmale sind instabil.

Um die Möglichkeit einer Überpassung zu ermitteln, können Sie den so genannten klassischen Vorwärtsversuch verwenden, der in Robert Pardos Buch[1] beschrieben ist. Die Idee der klassischen Methode ist wie folgt: Man wähle für ein Handelssystem zwei, sich nicht überlappende Zeiträume. Das Handelssystem wird in einem der Intervalle optimiert, und im zweiten Intervall wird ein Vorwärtstest mit im ersten Intervall optimierten Parametern durchgeführt. Wenn die Prüfung im zweiten (vorwärts gerichteten) historischen Intervall nicht erfolgreich ist, gilt das Handelssystem als überoptimiert und nicht für den automatisierten Handel geeignet. Wenn der Vorwärtstest ein positives Ergebnis liefert, wird eine zusätzliche Analyse durchgeführt, um das Verhalten des Handelssystems im Testintervall zu überprüfen - eine solche Analyse ermöglicht die Identifizierung der Systemeigenschaften.

Aber ein System, das alle in Robert Pardos Buch[1] beschriebenen Tests bestehen konnte, existiert praktisch nicht. Daher gibt der Autor kein konkretes Beispiel. Die Optimierung in einem Intervall und die Vorwärtsprüfung in einem anderen Intervall sowie die weitere Analyse der Vorwärtsprüfung stellen keine Garantie dar:

  1. Ein erfolgloser Vorwärtstest im zweiten Intervall kann ein robustes Handelssystem verwerfen. Tatsächlich werden Optimierungsalgorithmen oft bei lokalen Extrema und über angepassten Handelssystemparametern für solche Werte durchlaufen.
  2. Die Analyse von Vorwärts-Testergebnissen ist praktisch nutzlos, da, wenn Sie ein weiteres unabhängiges Intervall nehmen, in dem noch keine Optimierung oder Prüfung durchgeführt wurde, und in diesem Intervall zusätzliche Analysen durchführen, die neuen Analyseergebnisse nicht mit den vorherigen übereinstimmen. Der Grund ist derselbe, nämlich der nicht stationäre Charakter von Finanzinstrumenten. Darüber hinaus kann ein erfolgreicher Vorwärtstest in einem unabhängigen Intervall in keinem anderen Intervall erfolgreich sein. In diesen Fällen gibt es also nichts zu analysieren.

Da die klassische Methode der Überprüfung von Handelssystemen viele Nachteile hat, habe ich eine weitere entwickelt und getestet, die ich für zuverlässiger halte: Gold dust.

Der Unterschied zwischen den neuen und den klassischen Methoden besteht darin, dass die Optimierung des Handelssystems nicht in einem Intervall, sondern in zwei oder mehr Intervallen durchgeführt wird. Als Ergebnis erhalten wir verschiedene Sätze von Handelssystemparametern für jedes Intervall. Einige von ihnen werden die gleichen sein, andere werden sich unterscheiden. Wahrscheinlich sind einige dieser Parametersätze zu optimiert und andere nicht. Dies kann durch Vorwärtstests herausgefunden werden. 

Der Vorwärtstest unterscheidet sich vom klassischen dadurch, dass er mit zwei oder mehr optimierten Parametersätzen durchgeführt wird und nicht nur mit einem. Die Idee ist folgende: Wenn ein Handelssystem mit allen Parametersätzen ein vereinbartes Kauf- oder Verkaufssignal gibt, wird ein entsprechender Handel durchgeführt. Wenn die Signale unterschiedlich sind, d.h. es gibt Inkonsistenzen bei den vom System erzeugten Handelssignalen mit unterschiedlichen Parametersätzen, tut das Handelssystem bis zum nächsten Handelssignal nichts.

Was bringt uns das?

Hier müssen wir uns für die Robustheit des Handelssystems entscheiden. Handelssysteme können potenziell robust sein, d.h. mit einer Wahrscheinlichkeit größer Null, dass sie den Vorwärtstest nach der klassischen Methode bestehen werden; und nicht-robust, d.h. mit einer sehr hohen Wahrscheinlichkeit einer Überanpassung.

  • Wenn das Handelssystem nicht robust ist, dann kann es durch eine Überanpassung in zwei oder mehr historischen Intervallen robust werden, wenn die überangepassten Handelssignale konsistent sind. Das heißt, wenn wir Signale auf Konsistenz filtern, können sie für den automatisierten Handel verwendet werden.
  • Wenn ein Handelssystem mehr oder weniger robust ist, kann ein erfolgreicher Vorwärtstest im Konsistenzmodus des Handelssignals (angepasst und nicht angepasst) ein Beweis dafür sein, dass ein oder mehrere Parametersätze, die durch die Optimierung in verschiedenen historischen Datenintervallen erhalten wurden, nicht überfüllt sind und für den automatisierten Handel verwendet werden können.

Wir werden hier keine nicht-robusten Handelssysteme berücksichtigen, denn selbst wenn ihre Signale nach Konsistenz gefiltert werden, sind die Ergebnisse in nicht optimierten Intervallen nicht stabil genug, um zu handeln. Solche Handelssysteme sind eher für Experimente geeignet.

Lassen Sie uns zu einem robusten Handelssystem übergehen, das in der beigefügten Datei verfügbar ist. Das Handelssystem basiert auf der Prognose der Preisrichtung, die durch die Auswahl von Gewichtskoeffizienten eines elementaren einschichtigen neuronalen Netzwerks (ein Perceptron basierend auf historischen Daten) unter Verwendung des genetischen Algorithmus des Strategy Testers des MetaTraders realisiert wird. 


Verfahren zur Optimierung, Prüfung und Erkennung der Robustheit der Handelssystemparameter

Wir werden die historischen Daten des EURUSD für die letzten 9 Monate oder mehr im Zeitraum des ersten Halbjahres verwenden. Unterteilen wir den gesamten Zeitraum in drei unabhängige Intervalle von jeweils drei Monaten. Das erste Intervall wird für die abschließende Prüfung verwendet, und die anderen beiden werden für die Optimierung der Historie verwendet. Ich habe zwei Perceptrons in einem Handelssystem kombiniert, so dass es nicht notwendig ist, das System jedes Mal separat zu starten.

Die Schalterfunktion Supervisor() im EA-Code ermöglicht drei EA-Betriebsarten, abhängig vom Eingabeparameter "pass":

  1. Optimierung und Test des ersten Perzeptrons;
  2. Optimierung und Test des zweiten Perzeptrons;
  3. Herausfiltern widersprüchlicher Werte der beiden Wahrnehmungen im Testmodus, ohne Optimierung.

Folgende Gewichtskoeffizienten der Wahrnehmungen werden optimiert: x11, x12 ... x42, sowie MA: averaging period und Stop Loss. Der Eingangsparameter Stop Loss ist für alle Intervalle konstant. Dies ist der Stop-Loss aller offenen Positionen. Ein weiterer Eingabeparameter MA: averaging period bezeichnet die Verzögerungszeitspanne für die Differenz der offenen Preise; sie ist ebenfalls konstant. 

Der Markteintritt erfolgt zu Beginn der neuen Barformation, d.h. zu Baröffnungspreisen basierend auf Perceptron-Signalen in Abhängigkeit vom Wert des Parameters pass. Das Schließen wird nur von Stop-Loss durchgeführt. Die Optimierung erfolgt mit einem genetischen Algorithmus, der nach dem Extremum (d.h. dem maximalen Saldo in unserem Fall) sucht. 

Um den Einfluss des Margin Call auf den Algorithmus zu vermeiden, sollte der Anfangsbetrag sehr groß sein, z.B. $1.000.000.000.

In der ersten Phase müssen wir

die Eingabewerte der Variablen MA: averaging period und Stop Loss bestimmen. Zu diesem Zweck wählen wir die letzten beiden Historienintervalle, d.h. von vor 6 Monaten bis heute. Stellen Sie alle Parameter der Perceptrongewichte von Start = 0 bis Stop = 100 mit einer Schrittweite von 10 ein. Der Wert von MA: averaging period von Start = 3 bis Stop =100, mit einer Schrittweite von 10; der Wert von Stop Loss von Start = 10 bis Stop =75, mit einer Schrittweite von 10. Wert pass = 1. Wählen Sie die Optimierungsparameter aus: x11, x21, x31, x41, MA: averaging period und Stop Loss. Alle anderen Kontrollkästchen sollten deaktiviert sein. Starten Sie die Optimierung. Danach stellen Sie die Werte der Eingabeparameter entsprechend dem besten Durchlauf ein.

Die zweite Phase. Die Optimierung der ersten Perzeptrongewichte im zweiten historischen Datenintervall. Stellen Sie das Datum und die Zeit der Optimierung von vor 6 bis vor 3 Monaten ein. Entfernen Sie die Kontrollkästchen von MA: averaging period und Stop Loss. Starten Sie die Optimierung. Danach stellen Sie die Werte der Eingabeparameter entsprechend dem besten Durchlauf ein. Der Wert pass ist immer noch 1. 

Die dritte Phase. Die Optimierung der Gewichtung des zweiten Perzeptrons im dritten historischen Datenintervall. Stellen Sie das Datum und die Zeit der Optimierung von vor 3 Monaten bis heute ein. Entfernen Sie die Auswahl für die Parameter x11, x21, x31, x41 und wählen Sie x12, x22, x32 und x42. Alle anderen Parameter sollten deaktiviert werden. Setzen Sie pass = 2. Starten Sie die Optimierung. Danach stellen Sie die Werte der Eingabeparameter entsprechend dem besten Durchlauf ein.

Die vierte Phase. Das Handelssystem wurde bereits in den letzten sechs Monaten für historische Daten optimiert. Speichern Sie die Werte der Eingabeparameter in der Konfigurationsdatei. Setzen Sie die Eingangsvariable pass auf 3. Nun müssen wir unsere Systemrobustheit überprüfen, d.h. die Wahrscheinlichkeit, dass die Eingangsparameter nicht überoptimiert waren und dass sie in nicht optimierten Zeiträumen möglicherweise Gewinne abwerfen können. Also haben wir jetzt Daten von 9 bis 6 Monaten festgelegt (in diesem Intervall wurde keine Optimierung durchgeführt) und Tests durchgeführt.
Wenn das Testergebnis im Modus 3 negativ ist (Verlust), dann haben wir höchstwahrscheinlich überoptimierte Koeffizienten beider Perceptrons gefunden. In diesem Fall müssen wir die Optimierung erneut durchführen, um in der ersten Phase andere Werte der sl- und p-Parameter zu erhalten - die mögliche Ursache für den Verlust könnte in diesen Parametern liegen. Ein weiterer Grund für das Scheitern kann eine geringe Anzahl von Positionen während der ersten und zweiten Optimierungsphase sein (es sollten nicht weniger als 100 Positionen vorhanden sein) - in diesem Fall sollte das maximale Stoppintervall für den Parameter sl verringert werden.

Wenn die vierte Phase erfolgreich war, können wir davon ausgehen, dass entweder das erste oder das zweite Perzeptron oder sogar beide außerhalb der Optimierungsintervalle Gewinne erzielen und somit im Handel eingesetzt werden können. Jetzt müssen wir das Perzeptron auswählen. Dazu setzen wir die Daten von vor 9 Monaten auf den aktuellen Tag und führen Expert Advisor Tests in den Modi pass 1 und 2 durch.

Der Modus mit den besseren Ergebnissen ist höchstwahrscheinlich derjenige, der weniger überoptimiert ist und als handelstauglich gilt. Schalten Sie den EA in diesen Modus, speichern Sie die EA-Einstellungen in einer Datei. Danach führen Sie den EA auf einem Chart aus, stellen den Zeitrahmen auf H1 ein und laden die Einstellungen aus einer zuvor gespeicherten Datei.

Um sicherzustellen, dass diese Methode zur Entwicklung der Robustheit des Handelssystems wirklich effektiv ist, sollten natürlich alle historischen Datenintervalle tiefer in die Historie verschoben werden, um ein weiteres zusätzliches Intervall zu erhalten und unsere in diesem Intervall eingestellten Parameter zu testen.

Die obige Methode zur Bestimmung der Robustheit des Handelssystems ist nicht einfach. Sie ist aber viel einfacher und in den meisten Fällen zuverlässiger als die in Robert Pardos Buch[1] beschriebene klassische Methode, da sie die nahezu nutzlose und ressourcenintensive Handelssystemanalyse nach dem Vorwärtstest eliminiert.

Liste der Referenzen

1. Robert Pardo. Design, Testing and Optimisation of Trading System. - Minax, 2002. - 224 Seiten. ISBN 5-902270-01-4

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/23220

Float_Pivot_Smoothed_Digit Float_Pivot_Smoothed_Digit

Der Indikator Float_Pivot_Digit mit einer Glättung der Zeitreihen für die Berechnung. Der Glättungsparameter der Zeitreihen werden bestimmt durch die Eingabeparameter des Indikators

Float_Pivot_Digit Float_Pivot_Digit

Eine Alternative zu den Bollinger Bändern® mit farbigen Kanalhintergrund, gezeichnet al Wolke und der Anzeige der letzten Preise des Kanals und der Möglichkeit die Kanalwerte auf eine bestimmbare An zahl von Dezimalstellen zu runden

Gap DM Gap DM

Der Expert Advisor wartet auf eine Kurslücke, wenn sich eine neue Bar erscheint.

XFisher_org_v1_Vol_Supr_Zer XFisher_org_v1_Vol_Supr_Zer

Der Indikator XFisher_org_v1_Vol_Supr mit zusätzlichen Signalen in Form von runden Punkten, die ein Kreuzen der Indikatorlinie mit der Nulllinie anzeigt