Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheksklassen basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Fertige Expert Advisors im MQL5 Wizard erstellen für weitere Details). Es ermöglicht dir, deine Handelsideen schnell zu überprüfen; alles, was du tun musst, ist, deine eigene Handelsignal-Klasse zu erstellen. Die Struktur dieser Klasse sowie Beispiele findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.
Die grundlegende Idee ist wie folgt: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Dann ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden zu überschreiben.
In dem Buch "Strategien der besten Trader" (auf Russisch) werden viele Handelsstrategien behandelt. Unser Fokus liegt auf Umkehrkerzenmustern, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden.
Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch Kerzenmuster generiert werden, zu bestätigen, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen hinzuzufügen (zum Beispiel die Bestätigung durch Oszillatoren).
Hier betrachten wir Signale, die auf den Umkehrkerzenmustern "Morgenstern/Abendstern" (Morgen-Doji-Stern/Abend-Doji-Stern) basieren, die durch den RSI Indikator bestätigt werden. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, und es ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.
1. "Morgenstern" und "Abendstern" Umkehrkerzenmuster
1.1. Morgenstern
Dieses Muster zeigt die Umkehr eines Abwärtstrends an. Es besteht aus drei Kerzen (siehe Abb. 1). Nach einer langen schwarzen Kerze folgt eine Kerze (die Farbe ist nicht wichtig) mit einem kleinen Körper, die außerhalb des Körpers der schwarzen Kerze liegt. Der kleine Körper einer Kerze bedeutet, dass die Kräfte der Bullen und Bären gleich sind und der Markt bereit ist, den Trend zu ändern.
Die dritte Kerze des Musters ist die bullische Kerze, deren Körper nicht mit dem Körper der zweiten Kerze überlappt, und der Schlusskurs liegt innerhalb des Körpers der ersten (bearish) Kerze. Die resultierende Kerze des Modells ist ebenfalls in Abbildung 1 eingezeichnet.
Falls die zweite Kerze eine Doji-ähnliche Kerze ist, wird das Muster als "Morgen-Doji-Stern" bezeichnet.

Abb. 1. Morgenstern und Morgen-Doji-Kerzenmuster
Die Identifizierung des "Morgenstern"-Mustern erfolgt in den Methoden CheckPatternMorningStar() und CheckPatternMorningDoji() der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüfen der Bildung des "Morgenstern"-Mustern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternMorningStar() { //--- Morgenstern if((Open(3)-Close(3)>AvgBody(1)) && // bearische Kerze, deren Körper größer ist als der Durchschnitt (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // zweite Kerze hat einen kleinen Körper (weniger als die Hälfte des Durchschnitts) (Close(2)<Close(3)) && // Schlusskurs der zweiten Kerze liegt unter dem Schlusskurs der ersten (Open(2)<Open(3)) && // Eröffnung der zweiten Kerze liegt unter der Eröffnung der ersten (Close(1)>MidOpenClose(3))) // Schlusskurs der letzten abgeschlossenen Kerze liegt über dem Mittel der ersten return(true); //--- return(false); } //+------------------------------------------------------------------+ //| Überprüfen der Bildung des "Morgen-Doji-Stern"-Mustern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternMorningDoji() { //--- Morgen-Doji-Stern if((Open(3)-Close(3)>AvgBody(1)) && // bearische Kerze mit Körper größer als der Durchschnitt (AvgBody(2)<AvgBody(1)*0.1) && // die zweite Kerze hat einen sehr kleinen Körper (Doji) (Close(2)<Close(3)) && // Schlusskurs der zweiten Kerze liegt unter dem Schlusskurs der ersten (Open(2)<Open(3)) && // Eröffnung der zweiten Kerze liegt unter der Eröffnung der ersten (Open(1)>Close(2)) && // Aufwärtsgap in der letzten abgeschlossenen Kerze (Close(1)>Close(2))) // Schlusskurs der letzten abgeschlossenen Kerze liegt über dem Schlusskurs der zweiten return(true); //--- return(false); }
Die Methoden CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) und CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) der CCandlePattern Klasse werden verwendet, um die Bildung der "Morgenstern" und "Morgen-Doji-Stern" Kerzenmuster zu überprüfen.
1.2. Abendstern
Dieses Muster zeigt die Umkehr eines Aufwärtstrends an. Es besteht ebenfalls aus drei Kerzen (siehe Abb. 2). Nach einer langen weißen Kerze folgt eine Kerze (die Farbe ist nicht wichtig) mit einem kleinen Körper, die außerhalb des Körpers der weißen Kerze liegt. Der kleine Körper einer Kerze zeigt an, dass die Kräfte der Bullen und Bären gleich sind und der Markt bereit ist, den Trend zu ändern.
Die dritte Kerze des Musters ist die bearische Kerze, deren Körper nicht mit dem Körper der zweiten Kerze überlappt, und der Schlusskurs liegt innerhalb des Körpers der ersten (bullischen) Kerze. Die resultierende Kerze des Modells ist ebenfalls in Abbildung 2 eingezeichnet.
Falls die zweite Kerze eine Doji-ähnliche Kerze ist, wird das Muster als "Abend-Doji-Stern" bezeichnet.

Abb. 2. Abendstern und Abend-Doji-Stern Kerzenmuster
Hier sind die Methoden zur Identifizierung der "Abendstern" und "Abend-Doji-Stern" Muster:
//+------------------------------------------------------------------+ //| Überprüfen der Bildung des "Abendstern"-Mustern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternEveningStar() { //--- Abendstern if((Close(3)-Open(3)>AvgBody(1)) && // bullische Kerze mit Körper höher als der Durchschnitt (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // zweite Kerze hat einen kleinen Körper (weniger als die Hälfte des Durchschnitts) (Close(2)>Close(3)) && // Schlusskurs der zweiten Kerze liegt über dem Schlusskurs der ersten (Open(2)>Open(3)) && // Eröffnung der zweiten Kerze liegt über der Eröffnung der ersten (Close(1)<MidOpenClose(3))) // Schlusskurs der letzten abgeschlossenen Kerze liegt unter dem Mittel der ersten return(true); //--- return(false); } //+------------------------------------------------------------------+ //| Überprüfen der Bildung des "Abend-Doji-Stern"-Mustern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternEveningDoji() { //--- Abend-Doji-Stern if((Close(3)-Open(3)>AvgBody(1)) && // bullische Kerze mit Körper höher als der Durchschnitt (AvgBody(2)<AvgBody(1)*0.1) && // die zweite Kerze hat einen sehr kleinen Körper (Doji) (Close(2)>Close(3)) && // Schlusskurs der zweiten Kerze liegt über dem Schlusskurs der ersten (Open(2)>Open(3)) && // Eröffnung der zweiten Kerze liegt über der Eröffnung der ersten (Open(1)<Close(2)) && // Abwärtsgap in der letzten abgeschlossenen Kerze (Close(1)<Close(2))) // Schlusskurs der letzten abgeschlossenen Kerze liegt unter dem Schlusskurs der zweiten return(true); //--- return(false); }
Die Methoden CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) und CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) der CCandlePattern Klasse werden verwendet, um die Bildung der "Abendstern" und "Abend-Doji-Stern" Kerzenmuster zu überprüfen.
2. Handelssignale, die durch den RSI-Indikator bestätigt werden
Die Handelssignale zum Öffnen von Long- oder Short-Positionen müssen durch den RSI Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Levels (40 für Long-Positionen und 60 für Short-Positionen) liegen.
Das Schließen der geöffneten Position hängt von den Werten des RSI ab. Es kann in zwei Fällen erfolgen:
- wenn der RSI das entgegengesetzte kritische Level erreicht hat (70 für Long-Position und 30 für Short-Position)
- wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI die folgenden Levels erreicht: 30 für Long-Position und 70 für Short-Position)

Abb. 3. Morgenstern-Muster, bestätigt durch den RSI-Indikator
- int CMS_ES_RSI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen der Short-Position (gibt 40 zurück);
- int CMS_ES_RSI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und zum Schließen der Long-Position (gibt 40 zurück).
2.1. Long-Position öffnen/Short-Position schließen
Die Bildung des "Morgenstern"-Musters muss durch den RSI Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss kleiner als 40 sein).
Die Short-Position muss geschlossen werden, wenn der RSI Indikator die kritischen Levels 70 oder 30 nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CMS_ES_RSI::LongCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft der EA Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Morgenstern-Musters und RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (RSI(1)<40)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der Überkauft-/Überverkauftlevels (nach oben 30, nach oben 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- Ergebnis zurückgeben return(result); }
2.2. Short-Position öffnen/Long-Position schließen
Die Bildung des "Abendstern"-Musters muss durch den RSI Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein).
Die Long-Position muss geschlossen werden, wenn der RSI Indikator die kritischen Levels 70 oder 30 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CMS_ES_RSI::ShortCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft der EA Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Abendstern-Musters und RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (RSI(1)>60)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der Überkauft-/Überverkauftlevels (nach unten 70, nach unten 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- Ergebnis zurückgeben return(result); }
2.3. Erstellung des Expert Advisors mit MQL5 Wizard
Die CMS_ES_RSI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acms_es_rsi.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche gilt für die Datei candlepatterns.mqh. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditors verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Abb. 4. Erstellung des Expert Advisors mit MQL5 Wizard
Lass uns den Namen des Expert Advisors festlegen:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors
Danach müssen wir die verwendeten Module für Handelssignale auswählen.

Abb. 6. Signal-Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul für Handelssignale.
Hinzufügen des Moduls "Signale basierend auf Morgen-/Abendstern, bestätigt durch RSI" für Handelssignale:

Abb. 7. Signal-Eigenschaften des Expert Advisors
Modul der Handelssignale hinzugefügt:

Abb. 8. Signal-Eigenschaften des Expert Advisors
Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet":

Abb. 9. Trailing-Eigenschaften des Expert Advisors
Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors
Durch Drücken der Schaltfläche "Fertigstellen" erhalten wir den Code des generierten Expert Advisors, der in Expert_AMS_ES_RSI.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts befindet.
Die Standard-Inputparameter des generierten Expert Advisors:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =10; // Signal-Schwellenwert zum Öffnen [0...100] input int Signal_ThresholdClose =10 // Signal-Schwellenwert zum Schließen [0...100] input double Signal_PriceLevel =0.0 // Preisniveau zur Ausführung eines Handels input double Signal_StopLevel =50.0 // Stop-Loss-Niveau (in Punkten) input double Signal_TakeLevel =50.0 // Take-Profit-Niveau (in Punkten)
müssen ersetzt werden durch:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =40 // Signal-Schwellenwert zum Öffnen [0...100] input int Signal_ThresholdClose =20 // Signal-Schwellenwert zum Schließen [0...100] input double Signal_PriceLevel =0.0 // Preisniveau zur Ausführung eines Handels input double Signal_StopLevel =0.0 // Stop-Loss-Niveau (in Punkten) input double Signal_TakeLevel =0.0 // Take-Profit-Niveau (in Punkten)
Die Parameter Signal_ThresholdOpen/Signal_ThresholdClose erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.
Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben:
- Position öffnen: 80;
- Position schließen: 40.
Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen anhand der "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.
Die Stimmenergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden.
Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur dann erfolgt, wenn die Schließbedingungen erfüllt sind.
2.4. Ergebnisse der Rücktests
Betrachten wir die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).
Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1), der Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Morgen-/Abendstern + RSI
Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.
Die Untersuchung der Parameter wird erheblich erleichtert durch den 3D-Visualisierungsmodus des Strategietesters, der ab Build 419 hinzugefügt wurde (siehe Abb. 12):

Abb. 12. Balance als Funktion der Periodenparameter RSI und MA_period
Der Code des Expert Advisors, erstellt mit MQL5 Wizard, ist im expert_ms_es_rsi.mq5 angehängt.
Verwandte Beiträge
- So integrierst du hochkarätige Wirtschaftsdaten in deinen EA für MetaTrader 4
- Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen
- Erstelle einen Expert Advisor basierend auf dem Center of Gravity Indikator für MetaTrader 4
- MQL5 Wizard: Trade Signale auf Basis von Kurs-Crossover mit gleitendem Durchschnitt und ADX Bestätigung
- MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5