Der MQL5 Wizard ermöglicht es, sofort einsatzbereite Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheksklassen basieren, die zusammen mit dem Client-Terminal geliefert werden (weitere Informationen findest du im Artikel MQL5 Wizard: Erstellung von Expert Advisors). Damit kannst du deine Handelsideen schnell prüfen – du musst lediglich deine eigene Klassen für Handelssignale erstellen. Die Struktur dieser Klasse sowie ein Beispiel findest du im Artikel MQL5 Wizard: Erstellung eines Moduls für Handelssignale.
Das grundlegende Konzept ist folgendes: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Anschließend müssen die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschrieben werden.
Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir werden uns auf Umkehrkerzenmuster konzentrieren, die durch den Stochastic, CCI, MFI und RSI Indikatoren bestätigt werden.
Der beste Ansatz ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelssignale, die durch die Kerzenmuster generiert werden, reicht es aus, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die erforderlichen Funktionen (zum Beispiel die Bestätigung durch Indikatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den Stochastic Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse, die ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern darstellt.
1. Umkehrkerzenmuster: "Bullish Harami" und "Bearish Harami"
1.1. Bullish Harami
Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der fallende Trend möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, in eine Long-Position einzutreten. Die zweite Kerze öffnet mit einer Kurslücke nach oben.
Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr.

Abbildung 1. "Bullish Harami" Kerzenmuster
Die Erkennung des "Bullish Harami" Musters erfolgt über die Methode CheckPatternBullishHarami() der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Harami" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) // die letzte abgeschlossene Kerze ist bullish (weißer Tag) ((Open(2)-Close(2)>AvgBody(1)) && // die vorherige Kerze ist bearish, ihr Körper ist größer als der Durchschnitt (lange schwarze) ((Close(1)<Open(2)) // Schlusskurs der bullischen Kerze liegt unter dem Eröffnungskurs der bearishen Kerze (Open(1)>Close(2))) // Eröffnungskurs der bullischen Kerze liegt über dem Schlusskurs der bearishen Kerze (MidPoint(2)<CloseAvg(2))) // Abwärtstrend return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Harami" Kerzenmusters zu überprüfen.
1.2. Bearish Harami
Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der steigende Trend möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, in eine Short-Position einzutreten. Die zweite Kerze öffnet mit einer Kurslücke nach unten.
Je kleiner die zweite (schwarze) Kerze ist, desto wahrscheinlicher ist die Umkehr.

Abbildung 2. "Bearish Harami" Kerzenmuster
Die Erkennung des "Bearish Harami" Musters erfolgt über die Methode CheckPatternBearishHarami() der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Harami" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) // letzte abgeschlossene Kerze ist bearish (schwarzer Tag) ((Close(2)-Open(2)>AvgBody(1)) && // die vorherige Kerze ist bullish, ihr Körper ist größer als der Durchschnitt (lange weiße) ((Close(1)>Open(2)) && // Schlusskurs der bearishen Kerze liegt über dem Eröffnungskurs der bullischen Kerze (Open(1)<Close(2))) // Eröffnungskurs der bearishen Kerze liegt unter dem Schlusskurs der bullischen Kerze (MidPoint(2)>CloseAvg(2))) // Aufwärtstrend return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Harami" Kerzenmusters zu überprüfen.
2. Handelssignale, bestätigt durch den Stochastic-Indikator
Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den Stochastic Indikator bestätigt werden. Die %D Linie muss über/unter dem entsprechenden kritischen Niveau (30 oder 70) liegen.
Das Schließen der offenen Position hängt von den Werten des %D Indikators ab. Es kann in 2 Fällen erfolgen:
- Wenn die %D Linie das entgegengesetzte kritische Niveau erreicht hat (80 für Long-Position und 20 für Short-Position)
- Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D Linie folgende Niveaus erreicht: 20 für Long-Position und 80 für Short-Position)

Abbildung 3. "Bearish Harami" Kerzenmuster, bestätigt durch den Stochastic Indikator
Die Überprüfung der Handelsbedingungen für den Einstieg und Ausstieg wird in zwei Methoden implementiert:
- int CBH_BH_Stoch::LongCondition() - überprüft die Bedingungen für das Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück);
- int CBH_BH_Stoch::ShortCondition() - überprüft die Bedingungen für das Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück).
2.1. Long-Position eröffnen/Short-Position schließen
Die Bildung des "Bullish Harami" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss unter 30 liegen).
Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 20 oder 80 Niveaus nach oben durchquert.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktausstieg (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::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 für das Öffnen einer Long-Position //--- Bildung des Bullish Harami Musters und Signallinie<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30)) result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signallinienüberkreuzung der überkauften/überverkauften Niveaus (abwärts 20, aufwärts 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- Ergebnis zurückgeben return(result); }
2.2. Short-Position eröffnen/Long-Position schließen
Die Bildung des "Bearish Harami" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)>70 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss über 70 liegen).
Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 80 oder 20 Niveaus nach unten durchquert.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktausstieg (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::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 für das Öffnen einer Short-Position //--- Bildung des Bearish Harami Musters und Signallinie>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70)) result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signallinienüberkreuzung der überkauften/überverkauften Niveaus (abwärts 80, aufwärts 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- Ergebnis zurückgeben return(result); }
2.3. Erstellung eines Expert Advisors mit MQL5 Wizard
Die Klasse CBH_BH_Stoch ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbh_bh_stoch.mqh herunterladen (siehe Anhang) und sie im Client_terminal_dataolder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe solltest du mit der Datei candlepatterns.mqh tun. 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 festlegen:

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 von Handelssignalen.
Hinzufügen des Moduls: Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch Stochastic:

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
Was die Geldmanagement-Eigenschaften betrifft, 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_ABH_BH_Stoch.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts\ befindet.
Die Standard-Eingabeparameter des generierten Expert Advisors:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =10; // Schwellenwert für das Öffnen des Signals [0...100] input int Signal_ThresholdClose =10; // Schwellenwert für das Schließen des Signals [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; // Schwellenwert für das Öffnen des Signals [0...100] input int Signal_ThresholdClose =20; // Schwellenwert für das Schließen des Signals [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.
Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir feste Schwellenwerte angegeben:
- Position eröffnen: 80;
- Position schließen: 40.
Der durch den MQL5 Wizard generierte Expert Advisor eröffnet und schließt Positionen mithilfe der "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.
Die Stimmresultate des Hauptmoduls werden auch zur "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul von Handelssignalen, daher müssen wir bei der Festlegung der Schwellenwerte diesen Umstand berücksichtigen. Aus diesem Grund müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt 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. Historische Backtesting-Ergebnisse
Betrachten wir das Backtesting des Expert Advisors mit 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 haben wir ein festes Volumen verwendet (Handel mit festem Lot, 0.1). Der Trailing Stop-Algorithmus wird nicht verwendet (Kein Trailing verwendet).

Abbildung 11. Testergebnisse des Expert Advisors, basierend auf "Bullish/Bearish Harami + Stochastic"
Die besten Eingabeparameter können mit dem Strategy Tester des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_abh_bh_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
- Erstelle einen Expert Advisor basierend auf dem Center of Gravity Indikator für MetaTrader 4
- Skyscraper_Fix und ColorAML: Zwei leistungsstarke Systeme für MetaTrader 5
- MQL5 Wizard: Handelssignale mit 3 schwarzen Krähen/3 weißen Soldaten und Stochastik erstellen