Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Standardbibliotheksklassen basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellen von Fertigen Expert Advisors im MQL5 Wizard für weitere Details). Damit kannst du deine Handelsideen schnell überprüfen, alles was du tun musst, ist, eine eigene Handels-Signalklasse zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-Signale.
Das grundlegende Konzept ist folgendes: Die Handels-Signalklasse leitet sich von CExpertSignal ab. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir werden uns auf Umkehrkerzenmuster konzentrieren, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden.
Der beste Weg ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Ausbildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handels-Signale, die durch Kerzenmuster generiert werden, reicht es aus, die Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Funktionen (zum Beispiel die Bestätigung durch Oszillatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 schwarze Krähen / 3 weiße Soldaten" basieren, welches durch den Commodity Channel Index Indikator bestätigt wird. Das Modul der Handels-Signale basiert auf der CCandlePattern Klasse, ein einfaches Beispiel für die Nutzung zur Erstellung von Handels-Signalen 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 jeweils unter dem vorherigen Tag geschlossen haben, wobei sich der Eröffnungskurs jeder Sitzung im Körper der vorherigen Kerze befindet.

Abb. 1. Kerzenmuster "3 schwarze Krähen"
Die Erkennung des "3 schwarzen Krähen" Musters wird in der Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse implementiert:
//+------------------------------------------------------------------+ //| Überprüft die Ausbildung des Kerzenmusters "3 schwarze Krähen" | //+------------------------------------------------------------------+ 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 CCandlePattern Klasse wird verwendet, um die Ausbildung des Kerzenmusters "3 schwarze Krähen" 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 jeweils über dem vorherigen Tag geschlossen haben, wobei sich der Eröffnungskurs 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 öffnet. Bis zum Ende des zweiten Tages sollte sie nahe ihrem Hoch schließen, wobei ein sehr kleiner oder nicht vorhandener oberer Schatten verbleibt. Das gleiche Muster wird dann am dritten Tag wiederholt.

Abb. 2. Kerzenmuster "3 weiße Soldaten"
Hier ist die Methode zur Erkennung des "3 weißen Soldaten" Musters:
//+------------------------------------------------------------------+ //| Überprüft die Ausbildung des Kerzenmusters "3 weiße Soldaten" | //+------------------------------------------------------------------+ 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 CCandlePattern Klasse wird verwendet, um die Ausbildung des Kerzenmusters "3 weiße Soldaten" zu überprüfen.
2. Handels-Signale, bestätigt durch den CCI-Indikator
Die Handels-Signale zum Öffnen einer Long- oder Short-Position müssen durch den CCI Indikator bestätigt werden. Der Wert des CCI muss über/unter den kritischen Werten liegen (-50 für die Long-Position und 50 für die Short-Position)
Das Schließen einer offenen Position hängt von den Werten des CCI ab. Dies kann in zwei Fällen erfolgen:
- Wenn die CCI-Linie das gegenteilige kritische Niveau erreicht hat (80 für die Long-Position und -80 für die Short-Position)
- Wenn das Umkehrsignal nicht bestätigt wird (wenn der CCI die folgenden Werte erreicht: -80 für die Long-Position und 80 für die Short-Position)

Abb. 3. "3 schwarze Krähen" Muster, bestätigt durch den CCI-Indikator
- int CBC_WS_CCI::LongCondition() - prüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen der Short-Position (gibt 40 zurück);
- int CBC_WS_CCI::ShortCondition() - prü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 eröffnen/Short-Position schließen
-
Die Ausbildung des "3 schwarzen Krähen" Musters muss durch den CCI Indikator bestätigt werden: CCI(1)<-50 (der Wert des CCI der letzten abgeschlossenen Kerze muss kleiner als -50 sein).
-
Die Short-Position muss geschlossen werden, wenn der CCI Indikator das kritische Niveau -80 nach oben überschreitet oder das kritische Niveau 80 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Ausbildung des 3 weißen Soldaten Musters und CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signalzeilenüberkreuzung der überkauften/verkauften Niveaus (nach unten -80, nach unten -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.2. Short-Position eröffnen/Long-Position schließen
-
Die Ausbildung des "3 weißen Soldaten" Musters muss durch den CCI Indikator bestätigt werden: CCI(1)>50 (der Wert des CCI Indikators der letzten abgeschlossenen Kerze muss größer als 50 sein).
-
Die Long-Position muss geschlossen werden, wenn der CCI Indikator nach unten unter die -80 oder 80 Niveaus gefallen ist.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Ausbildung des 3 schwarzen Krähen Musters und CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signalzeilenüberkreuzung der überkauften/verkauften Niveaus (nach unten -80, nach unten 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.3. Erstellen eines Expert Advisors mit MQL5 Wizard
Die CBC_WS_CCI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbc_ws_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_dataolder\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche 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:

Abb. 4. Erstellen eines Expert Advisors mit MQL5 Wizard
Lass uns den Namen des Expert Advisors angeben:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors
Danach müssen wir die verwendeten Module der Handels-Signale auswählen.

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

Abb. 7. Signal-Eigenschaften des Expert Advisors
Modul der Handels-Signale 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 Money-Management-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors
Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der sich in Expert_ABC_WS_CCI.mq5 befindet und im terminal_data_folder\MQL5\Experts\ gespeichert wird.
Die Standard-Eingabeparameter 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)
muss 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 ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.
In den Methoden LongCondition() und ShortCondition() der Handels-Signalklasse haben wir die festen Werte der Schwellenwerte angegeben:
- Position öffnen: 80;
- Position schließen: 40.
Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen basierend auf den "Stimmen" der Handels-Signalmodule. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) wird ebenfalls verwendet, aber dessen LongCondition() und ShortCondition() Methoden geben immer 0 zurück.
Die Abstimmungsergebnisse des Hauptmoduls werden auch in der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Handels-Signalmodule, daher müssen wir dieses Faktum bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose als 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden.
Die Werte der Eingabeparameter 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 Backtests
Betrachten wir die Backtests des Expert Advisors anhand historischer Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13).
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).

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