Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen des MetaTrader 5 zu erstellen. So kannst du deine Handelsideen schnell überprüfen, indem du deine eigene Handelsignal-Klasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Wie man ein Modul für Handelssignale erstellt.
Im Grunde genommen wird die Klasse für Handelssignale von CExpertSignal abgeleitet. Danach musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
Ein interessantes Buch, das viele Handelsstrategien behandelt, ist "Strategien der besten Trader" (auf Russisch). Hierbei konzentrieren wir uns auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Indikatoren bestätigt werden.
Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelssignale, die durch die Kerzenmuster generiert werden, genügt es, eine Klasse abzuleiten, die von CCandlePattern abgeleitet ist, und dort die notwendigen Funktionen hinzuzufügen (zum Beispiel die Bestätigung durch Indikatoren).
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren, bestätigt durch den CCI Indikator. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, was ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern darstellt.
1. "Bullish Engulfing" und "Bearish Engulfing" Umkehrkerzenmuster
1.1. Bullish Engulfing
Das "Bullish Engulfing" Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des Vortages vollständig "verschluckt". Die Schatten der kleinen Kerze sind kurz, sodass der Körper der großen Kerze die gesamte Kerze des Vortages abdeckt.

Fig. 1. Bullish Engulfing Kerzenmuster
Die Erkennung des "Bullish Engulfing" Musters erfolgt in der Methode CheckPatternBullishEngulfing() der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des Bullish Engulfing Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2)>Close(2)) && // vorherige Kerze ist bearish (Close(1)-Open(1)>AvgBody(1)) && // Körper der bullischen Kerze ist höher als der Durchschnittswert des Körpers (Close(1)>Open(2)) && // Schlusskurs der bullischen Kerze ist höher als der Eröffnungskurs der bearishen Kerze (MidOpenClose(2)<CloseAvg(2)) && // Abwärtstrend (Open(1)<Close(2))) // Eröffnungskurs der bullischen Kerze ist niedriger als Schlusskurs der bearishen return(true); //--- return(false); }
Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Engulfing" Kerzenmusters zu überprüfen.
1.2. Bearish Engulfing
Das "Bearish Engulfing" Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des Vortages vollständig "verschluckt". Die Schatten der kleinen Kerze sind kurz, sodass der Körper der großen Kerze die gesamte Kerze des Vortages abdeckt.

Fig. 2. Bearish Engulfing Kerzenmuster
Die Erkennung des "Bearish Engulfing" Musters erfolgt in der Methode CheckPatternBearishEngulfing() der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des Bearish Engulfing Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // vorherige Kerze ist bullish (Open(1)-Close(1)>AvgBody(1)) && // Körper der Kerze ist höher als der Durchschnittswert des Körpers (Close(1)<Open(2)) && // Schlusskurs der bearishen Kerze ist niedriger als der Eröffnungskurs der bullischen Kerze (MidOpenClose(2)>CloseAvg(2)) && // Aufwärtstrend (Open(1)>Close(2))) // Eröffnungskurs der bearishen Kerze ist höher als Schlusskurs der bullischen Kerze return(true); //--- return(false); }
Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Engulfing" Kerzenmusters zu überprüfen.
2. Handelssignale, bestätigt durch den CCI-Indikator
Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den CCI Indikator bestätigt werden. Der CCI-Wert muss die kritischen Levels (-50 für Long-Positionen und 50 für Short-Positionen) über- oder unterschreiten.
Das Schließen der geöffneten Position hängt von den Werten des CCI ab. Dies kann in 2 Fällen erfolgen:
- Wenn die CCI-Linie das gegenteilige kritische Niveau (80 für Long-Positionen und -80 für Short-Positionen) erreicht hat.
- Wenn das Umkehrsignal nicht bestätigt ist (wenn CCI die folgenden Levels erreicht: -80 für Long-Positionen und 80 für Short-Positionen).

Fig. 3. Bullish Engulfing Muster, bestätigt durch den CCI-Indikator
- int CBE_BE_CCI::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 CBE_BE_CCI::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 "Bullish Engulfing" 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 von -80 nach oben überschreitet oder das kritische Niveau von 80 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::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 Bullish Engulfing Musters und CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/unterkauften Levels (abwärts -80, abwärts -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- Ergebnis zurückgeben return(result); }
2.2. Short-Position öffnen/Long-Position schließen
Die Bildung des "Bearish Engulfing" 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 die -80 oder 80 Levels überschreitet.
//+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::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 Bearish Engulfing Musters und CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1)>50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/unterkauften Levels (abwärts -80, abwärts 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- Ergebnis zurückgeben return(result); }
2.3. Erstellung eines Expert Advisors mit MQL5 Wizard
Die CBE_BE_CCI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbe_be_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe 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:

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

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

Fig. 6. Signal Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul der Handelssignale.
Hinzufügen des "Signale basierend auf Bullish Engulfing/Bearish Engulfing, bestätigt durch CCI" Moduls der Handelssignale:

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

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

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

Fig. 10. Geldmanagement Eigenschaften des Expert Advisors
Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_CCI.mq5 gespeichert wird, und das wird im terminal_data_folder\MQL5\Experts\ gespeichert.
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 // Preislevel zur Ausführung eines Deals input double Signal_StopLevel =50.0 // Stop-Loss-Level (in Punkten) input double Signal_TakeLevel =50.0 // Take-Profit-Level (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 // Preislevel zur Ausführung eines Deals input double Signal_StopLevel =0.0 // Stop-Loss-Level (in Punkten) input double Signal_TakeLevel =0.0 // Take-Profit-Level (in Punkten)
Die Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen anzugeben.
Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir die festen Werte der Schwellenwerte angegeben:
- Long-Position öffnen: 80;
- Short-Position schließen: 40.
Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.
Die Stimmenresultate des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, also müssen wir diese Tatsache bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 eingestellt werden.
Die Werte der Signal_StopLevel und Signal_TakeLevel Eingabeparameter sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen erfüllt sind.
2.4. Backtesting-Ergebnisse
Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodCCI=49, MA_period=11).
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).

Fig. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Engulfing/Bearish Engulfing + CCI
Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, erstellt vom MQL5 Wizard, ist in expert_abe_be_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: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5