MQL5 Wizard: Neue Version

MetaQuotes | 25 Januar, 2016

Das MetaTrader 5 Terminal wird fortlaufend verbessert und um neue Features erweitert. Der neue MetaTrader 5 Build 439 enthält den aktualisierten MQL5 Wizard, die die Erstellung von Expert Advisors auf Basis flexiblerer Handelsregeln ermöglicht. In diesem Beitrag erläutern wir die neuen Möglichkeiten des MQL5 Wizard und erklären die Änderungen an der Architektur von Expert Advisors, die mithilfe dieser Anwendung generiert werden.


Hintergrund

Der MQL5 Wizard war ursprünglich ein praktisches Werkzeug, das Händler dabei unterstützte, Programme in MQL5 zu erstellen. Schon in der ersten Version des MQL5 Wizard konnten Sie schnell einen gebrauchsfertigen Expert Advisor und einen Satz simpler Module mit Quellcode in MQL5 erstellen. Das Wichtige dabei ist, dass Sie die MQL5-Sprache nicht beherrschen müssen. Alles, was Sie brauchen, ist im Beitrag Erstellen Ihres eigenen Expert Advisors im MQL5 Wizard enthalten.

Ein durch den Wizard erstellter Expert Advisor enthält drei Module:

Jedes EA-Modul basiert auf einer bestimmten Klasse und bietet zahlreiche Möglichkeiten zur Anpassung des Verhaltens Ihres Expert Advisors.

Die Standardbibliothek enthält einen Satz funktional vollständiger, gebrauchsfertiger Klassen zur Umsetzung unterschiedlicher Mechanismen für Geldmanagement, die Pflege offener Positionen und die Erzeugung von Handelssignalen.

Diese Herangehensweise ermöglicht die Erstellung von Handelsrobotern auf Basis bewährter und gut funktionierender Module. Sie müssen nur ein paar Schritte befolgen und die erforderlichen Parameter festlegen. Doch die Erfahrung zeigt, dass auch gute Beispiele, die die Prinzipien des Schreibens benutzerdefinierten Klassen erklären, MQL5-Neulingen nicht immer helfen können. 

Ein weiterer Nachteil der vorherigen Version des MQL5 Wizard ist, dass Sie eine neue Klasse schreiben mussten, um einen neuen, leicht veränderten Handelsalgorithmus umzusetzen.

Anhand dieser Erfahrung und von Kommentaren von Benutzern beschloss MetaQuotes, eine erweiterte Version des MQL5 Wizard mit noch mehr Funktionen zu erschaffen.


Ein neues Konzept für die Erzeugung von Handelssignalen

Der größte Stolperstein in der vorherigen Version des MQL5 Wizard hing mit Problemen zusammen, die bei der Erstellung eigener Handelssignale auftreten konnten. Deshalb lag unser Hauptaugenmerk bei der Entwicklung der neuen Version des Wizard auf der Vereinfachung der Erstellung kombinierter Handelssignale auf Basis einfacher Prinzipien.

Zu diesem Zweck wurden die folgenden Änderungen an der Basisklasse des Handelssignal-Generators vorgenommen (hiernach als das Signal bezeichnet):

So kann die Entscheidung über den Markteintritt in die eine oder andere Richtung nun "gemeinsam" getroffen werden, d. h. unter Berücksichtigung der "berücksichtigten Meinung" jedes Beraters.

Das Signal "stimmt" für die Richtung der Preisverschiebung auf Basis eingebauter Algorithmen zur Bestimmung von Marktmustern (die für dieses Signal charakteristisch sind). Beispielsweise kann ein Signal mit stochastischer Basis eine Umkehrung, eine Preisabweichung usw. erkennen.

Die Standardbibliothek beinhaltet bereits zwanzig gebrauchsfertige Signale auf Basis verschiedener Indikatoren.


Ein neuer Mechanismus für das Treffen von Handelsentscheidungen

Der Mechanismus für das Treffen von Handelsentscheidungen durch das Signal beruht auf den folgenden Grundvoraussetzungen:

Die Einstellungen jedes generierten Expert Advisors beinhalten zwei Parameter: die Schwellenwerte für das Treffen einer Entscheidung über das Öffnen oder Schließen einer Position (ThresholdOpen und ThresholdClose), die einen Wert zwischen 0 und 100 haben können. Wenn die Stärke eines Signals den Schwellenwert übersteigt, wird eine Entscheidung für die Durchführung einer Handelstätigkeit getroffen.

Der mithilfe des MQL5 Wizard erstellte EA besteht aus drei Teilen. Der wichtigste davon ist der Kopf, der das Modul für die Erstellung von Handelssignalen enthält. Dann können die Prozesse im Modul der Signale folgendermaßen dargestellt werden:



Die Abbildung zeigt, dass das Signalmodul zwei Blöcke enthalten kann – einen Block aus Marktmustern und einen Block aus Beratern. Der Musterblock erstellt Prognosen für jedes Muster, aus denen das stärkste ausgewählt wird. Die Prognosen von Beratern (andere Signale) werden mit dem entsprechenden Gewichtungsfaktor multipliziert und die sich daraus ergebenden Werte während der Abstimmung summiert, um die arithmetisch gemittelte Prognose zu erhalten. In diesem Fall lautet das Ergebnis des Signals für die aktuelle Situation -36,6 = (-100+60-54)/3. Das bedeutet eine Verkaufsprognose mit einer absoluten Stärke von 36,6.

Betrachten wir den Mechanismus für das Treffen von Entscheidungen anhand von zwei einfachen Beispielen.

Nehmen wir einen Expert Advisor mit ThresholdOpen=20 und ThresholdClose=90 an. Signalmodule auf Basis von MA mit einem Gewichtungsfaktor von 0.4 und Stochastic mit einer Gewichtung von 0.8 sind an der Entscheidungsfindung beteiligt. Betrachten wir zwei Optionen für die erhaltenen Handelssignale:



Abbildung 1. Beispiel für ein Preismuster im Diagramm

Die Abbildung illustriert die in den Beispielen beschriebenen Marktmuster:

a) Die Divergenz zwischen Preis und Stochastic-Oszillator wird in den Optionen 1 und 2 genutzt.
b) Der Preis hat den MA-Indikator
von unten nach oben überschritten – genutzt in Option 1.
c) Der Preis hat den MA-Indikator von oben nach unten überschritten – genutzt in Option 2.


Kombinieren von Signalen im EA

Für die Erstellung unseres eigenen Expert Advisors müssen wir zuerst entscheiden, welches Instrument in welchem Timeframe gehandelt werden soll. Als Zweites müssen wir Signale auf Basis der Indikatoren auswählen, die wir für den Handel nutzen werden.

In unserem Beispiel gelten die folgenden Bedingungen:

  1. Das gehandelte Symbol ist EURUSD. Unser Timeframe ist M10.
  2. Verwendete Signale:
    • EMA('EURUSD',M10,31) – Signale auf Basis eines exponentiellen gleitenden Mittelwerts;
    • Stochastic('EURUSD',M10,8,3,3) – Signale auf Basis des Stochastic-Oszillators;
    • EMA('EURUSD',H1,24) – Signale auf Basis eines exponentiellen gleitenden Mittelwerts aus einem anderen Timeframe;
    • Stochastic('EURJPY',H4,8,3,3) – Signale auf Basis des Stochastic-Oszillators aus einem anderen Symbol und Timeframe;
    • IntradayTimeFilter – ein Filter nach Tageszeit und Nummer des Wochentages.


Erstellen eines Handelsroboters im neuen MQL5 Wizard

Der Quellcode des Expert Advisors wird mithilfe des MQL5 Wizard im MetaEditor generiert.

Die Basisklassen von Handelsstrategien befinden sich in Datenverzeichnis_des_Terminals\MQL5\Include\Expert\. Gebrauchsfertige Algorithmen von Handelssignalklassen, Klassen für das Trailing offener Positionen und Klassen für das Geld- und Risikomanagement befinden sich in den Unterordnern Signal, Trailing und Money. Der MQL5 Wizard analysiert die Dateien in diesen Ordnern und nutzt sie für die Generierung des Codes des Expert Advisors.

Basisklassen für MQL5 Wizard

Abb. 2 Basisklassen für MQL5 Wizard

Zum Starten des MQL5 Wizard müssen Sie in der Werkzeugleiste auf "New" (Neu) klicken oder im Menü "File" (Datei) "New" auswählen (oder Strg+N drücken):

Abb. 2 Starten des MQL5 Wizard

Abb. 3 Starten des MQL5 Wizard

Wählen Sie anschließend die Art des Programms, das Sie erstellen möchten. In unserem Fall wählen Sie die Option "Expert Advisor (generate)" (Expert Advisor (generieren)):

Abb. 3 Auswahl der Art des Programms

Abb. 4 Auswahl der Art des Programms


Schritt 1. Allgemeine Eigenschaften des Expert Advisors

Als Nächstes öffnet sich ein Dialogfenster, in dem Sie die allgemeinen Eigenschaften des Expert Advisors festlegen können:

Abb. 4 Allgemeine Eigenschaften eines Expert Advisors

Abb. 5 Allgemeine Eigenschaften eines Expert Advisors

Geben Sie den Namen Ihres Expert Advisors, den Namen des Autors und den Link zu Ihrer Webseite in den Feldern "Name", "Author" und "Link" an.

Der Expert Advisor hat außerdem die folgenden Eingabeparameter:

Standardmäßig sind beide Optionen als "current" festgelegt (d. h., der Expert Advisor wird für jedes beliebige Symbol/Timeframe getestet und führt Handelstätigkeiten durch).

Aber ist das wirklich immer gut? Es kann zum Beispiel passieren, dass Sie einen Expert Advisor, der für den Intraday-Handel für EURUSD eingerichtet ist (und zudem die Bestätigung eines Cross-Paares nutzt), versehentlich auf ein AUDNZD-Wochendiagramm anwenden. Das ist überhaupt nicht gut.

Deshalb ist es besser, die erforderlichen Parameter festzulegen. Wählen Sie im nächsten Schritt die Art der Handelssignale, für die der EA handeln wird. Klicken Sie auf "Weiter", um zur Symbolauswahl zu gelangen.


Schritt 2. Auswahl der Module von Handelssignalen

Der Algorithmus für die Öffnung und Schließung von Positionen wird durch die Module von Handelssignalen bestimmt. Module von Handelssignalen beinhalten Regeln zum Öffnen/Schließen/Umkehren von Positionen.

Ein Expert Advisor kann gleichzeitig bis zu 64 verschiedene (oder gleiche mit unterschiedlichen Einstellungen) Module von Handelssignalen nutzen.

Abb. 5 Parameter von EA-Signalen (Anfang).

Abb. 6 Parameter von EA-Signalen (Anfang).

In der Standardbibliothek finden Sie gebrauchsfertige Module von Handelssignalen:

  1. Signals of indicator 'Accelerator Oscillator' (Signale des AC-Indikators);
  2. Signals of indicator 'Adaptive Moving Average' (Signale des AMA-Indikators);
  3. Signals of indicator 'Awesome Oscillator' (Signale des AO-Indikators);
  4. Signals of oscillator 'Bears Power' (Signale des Oszillators Bears Power);
  5. Signals of oscillator 'Bears Power' (Signale des Oszillators Bulls Power);
  6. Signals of oscillator 'Commodity Channel Index' (Signale des CCI-Oszillators);
  7. Signals of oscillator 'DeMarker' (Signale des DeM-Oszillators);
  8. Signals of indicator 'Double Exponential Moving Average' (Signale des DEMA-Indikators);
  9. Signals of indicator 'Envelopes' (Signale des Envelopes-Indikators);
  10. Signals of indicator 'Fractal Adaptive Moving Average' (Signale des FrAMA-Indikators);
  11. Signals of intraday time filter (Signale des Intraday-Zeitfilters);
  12. Signals of oscillator 'Moving Average Convergence/Divergence' (Signale des MACD-Oszillators);
  13. Signals of indicator 'Moving Average' (Signale des MA-Indikators);
  14. Signals of indicator 'Parabolic SAR' (Signale des PSAR-Indikators);
  15. Signals of oscillator 'Relative Strength Index' (Signale des RSI-Oszillators);
  16. Signals of oscillator 'Relative Vigor Index' (Signale des RVI-Oszillators);
  17. Signals of oscillator 'Stochastic' (Signale des Stochastic-Oszillators);
  18. Signals of oscillator 'Triple Exponential Average' (Signale des TriX-Oszillators);
  19. Signals of indicator 'Triple Exponential Moving Average' (Signale des TEMA-Indikators);
  20. Signals of oscillator 'Williams Percent Range' (Signale des WPR-Oszillators).


Abb. 6 Auswahl von Signalen

Abb. 7 Auswahl von Signalen

Gemäß unserem "Themenbereich" wählen wir zuerst "Signals of indicator 'Moving Average'".

Konfigurieren Sie die erforderlichen Parameter (PeriodMA und Method). Doppelklicken Sie auf das Feld "Name", um alle Parameter außer Weight von der Optimierung auszuschließen (standardmäßig sind alle Parameter des Signals als input-Parameter markiert).

Die Felder "Symbol" und "TimeFrame" müssen wir besonders berücksichtigen. Diese Felder sollten ausgefüllt werden, wenn die entsprechenden Einstellungen des Signals sich von den aktuellen Parametern unterscheiden. Als aktuelle Einstellungen behandelt das Signal Einstellungen mit "überlegener Intelligenz" (in diesem Fall die des Expert Advisors).

Abb. 7 Konfiguration der Signal-Parameter

Abb. 8 Konfiguration der Signal-Parameter

Fügen Sie die verbleibenden Signale hinzu und konfigurieren Sie die erforderlichen Parameter. Für die Optimierung lassen wir bei allen Signalen nur den Parameter Weight.

Die Konfiguration der Signale ist abgeschlossen. Klicken Sie auf "Weiter", um fortzufahren.

Abb. 8 Parameter von EA-Signalen (Ende)

Abb. 9 Parameter von EA-Signalen (Ende)


Schritt 3. Auswahl des Moduls für das Trailing offener Positionen

Der nächste Schritt ist die Auswahl des Algorithmus für das Trailing offener Positionen (Trailing Stop). Durch Trailing können Sie erarbeitete Gewinne sichern.

Die Konfiguration dieses Moduls wird im Beitrag MQL5 Wizard: Erstellen von Expert Advisors ohne Programmierung detailliert beschrieben. In unserem Fall nutzen wir kein Trailing.

Abb. 9 Auswahl des Algorithmus für das Positions-Trailing

Abb. 10 Auswahl des Algorithmus für das Positions-Trailing


Schritt 4. Auswahl des Moduls für Geld- und Risikomanagement

Im letzten Schritt müssen Sie das System für das Geld- und Risikomanagement auswählen, das in Ihrem Expert Advisor verwendet wird. Die Konfiguration dieses Moduls wird im Beitrag MQL5 Wizard: Erstellen von Expert Advisors ohne Programmierung detailliert beschrieben. In unserem Fall nutzen wir ein festes Los.


Abb. 10 Auswahl des Algorithmus für Geldmanagement

Abb. 11 Auswahl des Algorithmus für Geldmanagement

Das war's. Klicken Sie auf "Fertigstellen".


Überprüfen des erstellten Expert Advisors im Strategietester in MetaTrader 5

Wenn alle Komponenten der Standardbibliothek vorhanden sind, wird der Code des erstellten Expert Advisors erfolgreich kompiliert. Der beste Satz von Parametern für den Expert Advisor lässt sich mithilfe der Optimierung im Strategietester in MetaTrader 5 bestimmen.

Die Optimierung des EA führen wir für den Zeitraum vom 01.01.10 bis zum 01.01.11 in zwei Phasen durch.

Die erste Phase: "Auswahl der Gewichtungsfaktoren von Signalen, Schwellenwerte für die Auslösung von Eingangs-/Ausgangsereignissen und Handelsebenen."

Abb. 11 Parameter der Optimierung des Expert Advisors

Abb. 12 Parameter der Optimierung des Expert Advisors

Hier sehen Sie das Ergebnis des besten Durchlaufs der Optimierung.

Abb. 12 Ergebnisse der Optimierung des Expert Advisors

Abb. 13 Ergebnisse der Optimierung des Expert Advisors

Wir haben bereits gute Ergebnisse erhalten (in Bezug auf Gewinn und maximalen Drawdown). Wir dürfen nicht vergessen, dass wir mit einem festen Los "handelten".

Versuchen wir, die Ergebnisse noch weiter zu verbessern. Zu diesem Zweck haben wir ein weiteres Signal (wir haben seine Einstellungen noch nicht verwendet). Die Werte, die durch die Optimierung der Parameter gefunden werden, beschreiben ein vom Expert Advisor erkanntes Marktmuster.

Nehmen wir jedoch an, dass das dadurch entstandene Marktmuster nicht immer gleich gut funktioniert. Versuchen wir, den Zeitfilter auf die Ergebnisse der Optimierung anzuwenden.

Zu diesem Zweck optimieren wir den Expert Advisor gemäß dem Parameter "Bad hours" der "IntradayTimeFilter"-Signale. Der Parameter "Bad hours" ist ein 24-bit-Bitmap (die Anzahl der Stunden eines Tages). Jedes Bit der Bitmaske entspricht eindeutig einer der Stunden (die Anzahl der Bits in der Maske und der Stunden in einem Tag sind gleich). Jeder Bitwert, der 1 entspricht, überschreibt jedes Abstimmungsergebnis, wenn die Nummer der aktuellen Stunde der Nummer dieses Bits entspricht (d. h., die Stunde wird als schlecht für den Handel betrachtet).

Um alle möglichen Kombinationen aus "guten" und "schlechten" Stunden durchzusehen, optimieren wir den Parameter von 0 bis 2^24-1 (in natürlicher Form 16 777 215) um einen Schritt gleich 1.

Abb. 13 Parameter der Optimierung des Expert Advisors

Abb. 14 Parameter der Optimierung des Expert Advisors

Als Ergebnis der Optimierung erhalten wir 11 665 415. Um zu verstehen, was das bedeutet, drücken wir das Ergebnis in binärer Form aus:

Hier sehen Sie die Parameter des Expert Advisors nach allen Optimierungen.

Abb. 14 Eigenschaften des Expert Advisors

Abb. 15 Eigenschaften des Expert Advisors

Der Bericht eines einmaligen Tests mit den besten Parametern ist angehängt. Der Gewinn ist höher, der Drawdown geringer. Es lässt sich schlussfolgern, dass das Ergebnis des Handelssystems im historischen Zeitraum sich nach der Anwendung des Zeitfilters verbessert hat.


Fazit

Der Gebrauch der Klassen von Handelsstrategien sorgt für eine wesentliche Erleichterung der Erstellung von Robotern zum Testen von Handelsideen direkt im MetaEditor mithilfe des MQL5 Wizard. Jetzt kann der gesamte Quellcode eines Expert Advisors auf Basis der Kombination aus gebrauchsfertigen Modulen aus der Standardbibliothek oder mithilfe Ihrer eigenen Module konstruiert werden.