Der MQL5 Wizard ermöglicht es dir, sofort einsatzbereite Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden (siehe Bereitstellung von Expert Advisors im MQL5 Wizard für weitere Details). Du kannst deine Handelsideen schnell überprüfen, indem du einfach deine eigene Klasse für Handelssignale erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Erstellung eines Moduls für Handelssignale.
Die grundlegende Idee ist wie folgt: Die Klasse der Handelssignale wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden.
Die beste Vorgehensweise ist, eine separate Klasse abzuleiten, die von CExpertSignal abgeleitet ist, um die Ausbildung von Kerzenmustern zu überprüfen. Zum Bestätigen der Handelssignale, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern stammt, und die erforderlichen Funktionen (z.B. Bestätigung durch Oszillatoren) dort hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 schwarze Krähen/3 weiße Soldaten" basieren, das durch den Stochastik-Indikator bestätigt wird. Das Handelsmodul basiert auf der Klasse CCandlePattern, ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.
1. Umkehrkerzenmuster "3 schwarze Krähen" und "3 weiße Soldaten"
1.1. 3 schwarze Krähen
Ein bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die unter dem Schlusskurs des vorherigen Tages geschlossen haben, wobei sich die Eröffnung jeder Sitzung im Körper der vorherigen Kerze befindet.

Abbildung 1. Kerzenmuster 3 schwarze Krähen
Die Erkennung des "3 schwarze Krähen"-Musters wird in der Methode CheckPatternThreeBlackCrows der Klasse CCandlePattern implementiert:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 schwarze Krähen"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 schwarze Krähen if((Open(3)-Close(3)>>AvgBody(1)) && // (lange schwarze) (Open(2)-Close(2)>>AvgBody(1)) && (Open(1)-Close(1)>>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (niedrigere Mittelpunkte) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der Klasse CCandlePattern wird verwendet, um die Bildung des "3 schwarze Krähen"-Kerzenmusters zu überprüfen.
1.2. Kerzenmuster 3 weiße Soldaten
Ein bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die höher als der Schlusskurs des vorherigen Tages geschlossen haben, wobei sich die Eröffnung jeder Sitzung im Körper der vorherigen Kerze befindet.
Das Muster ist gültig, solange die Kerze des zweiten Tages in der oberen Hälfte des Bereichs des ersten Tages eröffnet. Am Ende des zweiten Tages sollte sie nahe ihrem Hoch schließen und einen sehr kleinen oder nicht vorhandenen oberen Schatten hinterlassen. Das gleiche Muster wird am dritten Tag wiederholt.

Abbildung 2. Kerzenmuster 3 weiße Soldaten
Hier ist die Methode zur Erkennung des "3 weiße Soldaten"-Musters:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 weiße Soldaten"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 weiße Soldaten if((Close(3)-Open(3)>>AvgBody(1)) && // lange weiße (Close(2)-Open(2)>>AvgBody(1)) && (Close(1)-Open(1)>>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // höhere Mittelpunkte (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der Klasse CCandlePattern wird verwendet, um die Bildung des "3 weiße Soldaten"-Kerzenmusters zu überprüfen.
2. Handelssignale, bestätigt durch den Stochastik-Indikator
Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den Stochastik-Oszillator bestätigt werden. Die %D-Linie muss über bzw. unter dem entsprechenden kritischen Niveau (30 oder 70) liegen.
Das Schließen der geöffneten Position hängt von den Werten des %D-Indikators ab. Dies kann in zwei Fällen erfolgen:
- Wenn die %D-Linie das gegenüberliegende kritische Niveau erreicht (80 für eine Long-Position und 20 für eine Short-Position)
- Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie die folgenden Niveaus erreicht: 20 für eine Long-Position und 80 für eine Short-Position)

Abbildung 3. 3 weiße Soldaten-Muster, bestätigt durch den Stochastik-Indikator
Die Überprüfung der Handelsbedingungen für den Einstieg und Ausstieg erfolgt in zwei Methoden:
- int CBC_WS_Stoch::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und schließt die Short-Position (gibt 40 zurück);
- int CBC_WS_Stoch::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und schließt die Long-Position (gibt 40 zurück).
2.1. Long-Position eröffnen/Short-Position schließen
Die Bildung des "3 weiße Soldaten"-Musters muss durch den Stochastik-Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastik-Indikators der letzten abgeschlossenen Kerze muss weniger als 30 sein).
Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastik-Indikators die 20 oder 80 Niveaus nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktausgang (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_Stoch::LongCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des 3 weiße Soldaten-Musters und Signallinie<30 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signallinie kreuzt überkaufte/verkaufte Niveaus (abwärts 20, aufwärts 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.2. Short-Position eröffnen/Long-Position schließen
Die Bildung des "3 schwarze Krähen"-Musters muss durch den Stochastik-Indikator bestätigt werden: StochSignal(1)>70 (der Wert der Signallinie des Stochastik-Indikators der letzten abgeschlossenen Kerze muss größer als 70 sein).
Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastik-Indikators die 80 oder 20 Niveaus nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktausgang (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_Stoch::ShortCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des 3 schwarze Krähen-Musters und Signallinie>70 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signallinie kreuzt überkaufte/verkaufte Niveaus (abwärts 80, aufwärts 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.3. Erstellung eines Expert Advisors mit MQL5 Wizard
Die Klasse CBC_WS_Stoch ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbc_ws_stoch.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei candlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard
Lass uns den Namen des Expert Advisors angeben:

Abbildung 5. Allgemeine Eigenschaften des Expert Advisors
Danach müssen wir die Module der verwendeten Handelssignale auswählen.

Abbildung 6. Signal Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul für Handelssignale.
Hinzufügen des Moduls "Signale basierend auf 3 schwarzen Krähen/3 weißen Soldaten, bestätigt durch Stochastik":

Abbildung 7. Signal Eigenschaften des Expert Advisors
Modul für Handelssignale hinzugefügt:

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

Abbildung 9. Trailing Eigenschaften des Expert Advisors
Bezüglich der Geldmanagement-Eigenschaften verwenden wir "Handel mit festem Handelsvolumen":

Abbildung 10. Geldmanagement Eigenschaften des Expert Advisors
Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABC_WS_Stoch.mq5 gespeichert wird, und der sich im Verzeichnis terminal_data_folder\MQL5\Experts\ befindet.
Die Standard-Eingabeparameter des generierten Expert Advisors:
//--- Eingaben für 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)
muss ersetzt werden durch:
//--- Eingaben für 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 Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte festgelegt:
- Position öffnen: 80;
- Position schließen: 40.
Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelssignalen. 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 Ergebnisse der Stimmen des Hauptmoduls werden auch im "Stimmen"-Durchschnitt verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose als 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 erfolgt, wenn die Schließbedingungen erfüllt sind.
2.4. Ergebnisse der historischen Rücktests
Betrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).
Bei der Erstellung des Expert Advisors haben wir das feste Volumen verwendet (Handel mit festem Lot, 0.1), der Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abbildung 11. Testergebnisse des Expert Advisors, basierend auf 3 schwarzen Krähen/3 weißen Soldaten + Stochastik
Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist im expert_abc_ws_stoch.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
- MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5
- MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI
- MQL5 Wizard: Handels-Signale mit 3 Schwarzen Krähen und 3 Weißen Soldaten + MFI