Der MQL5 Wizard ermöglicht es dir, schlüsselfertige Expert Advisors (EAs) basierend auf den Klassen der Standardbibliothek zu erstellen, die mit dem Client-Terminal geliefert werden (siehe Schaffung von schlüsselfertigen EAs im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen, alles was du tun musst, ist eine eigene Klasse für Handelssignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.
Die grundlegende Idee ist folgende: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Anschließend ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit eigenen Methoden zu überschreiben.
Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden.
Der beste Weg ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung der Kerzenmuster zu überprüfen. Um die Handelssignale, die durch die Kerzenmuster generiert werden, zu bestätigen, genügt es, die Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren und durch den Market Facilitation Index (MFI) Indikator bestätigt werden. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern.
1. "Bullish Engulfing" und "Bearish Engulfing" Umkehrkerzenmuster
1.1. Bullish Engulfing
Das "Bullish Engulfing" Umkehrmuster entsteht in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des vorhergehenden Tages vollständig überdeckt. Die Schatten (Dochte) der kleinen Kerze sind kurz, was es der großen Kerze ermöglicht, den gesamten Körper der Kerze des vorhergehenden Tages zu überdecken.

Abbildung 1. "Bullish Engulfing" Kerzenmuster
Die Erkennung des "Bullish Engulfing" Musters erfolgt in der CheckPatternBullishEngulfing()-Methode der CCandlePattern-Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Engulfing" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2)>Close(2)) && // vorherige Kerze ist bärisch (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 bärischen Kerze (MidOpenClose(2)<CloseAvg(2)) && // Abwärtstrend (Open(1)<Close(2))) // Eröffnungskurs der bullischen Kerze ist niedriger als der Schlusskurs der bärischen 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 entsteht in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des vorhergehenden Tages vollständig überdeckt. Die Schatten (Dochte) der kleinen Kerze sind kurz, was es der großen Kerze ermöglicht, den gesamten Körper der Kerze des vorhergehenden Tages zu überdecken.

Abbildung 2. "Bearish Engulfing" Kerzenmuster
Die Erkennung des "Bearish Engulfing" Musters erfolgt in der CheckPatternBearishEngulfing()-Methode der CCandlePattern-Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Engulfing" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // vorherige Kerze ist bullisch (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 bärischen Kerze ist niedriger als der Eröffnungskurs der bullischen Kerze (MidOpenClose(2)>CloseAvg(2)) && // Aufwärtstrend (Open(1)>Close(2))) // Eröffnungskurs der bärischen Kerze ist höher als der 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 MFI-Indikator
Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den MFI-Indikator bestätigt werden. Der Wert des MFI-Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen.
Das Schließen der offenen Position hängt von den Werten des MFI-Indikators ab. Dies kann in 2 Fällen erfolgen:
- Wenn der MFI das entgegengesetzte kritische Niveau erreicht hat (70 für Long-Position und 30 für Short-Position)
- Wenn das umgekehrte Signal nicht bestätigt wird (wenn der MFI-Indikator die folgenden Werte erreicht: 30 für Long-Position und 70 für Short-Position)

Abbildung 3. "Bullish Engulfing" Muster, bestätigt durch MFI Indikator
- int CBE_BE_MFI::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_MFI::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 eröffnen/Short-Position schließen
Die Bildung des "Bullish Engulfing" Musters muss durch den MFI-Indikator bestätigt werden: MFI(1)<40 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein).
Die Short-Position muss geschlossen werden, wenn der MFI-Indikator die kritischen Niveaus (70 oder 30) nach oben durchbricht.
//+------------------------------------------------------------------+ //| Ü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 CBE_BE_MFI::LongCondition() { int result=0; //--- idx kann verwendet werden, um den Betriebsmodus des EAs 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 MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (MFI(1)<40)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linie kreuzt überkaufte/überverkaufte Niveaus (nach oben 30, nach oben 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- Ergebnis zurückgeben return(result); }
2.2. Short-Position eröffnen/Long-Position schließen
Die Bildung des "Bearish Engulfing" Musters muss durch den MFI-Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein).
Die Long-Position muss geschlossen werden, wenn der MFI-Indikator die kritischen Niveaus (70 oder 30) nach oben durchbricht.
//+------------------------------------------------------------------+ //| Ü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 CBE_BE_MFI::ShortCondition() { int result=0; //--- idx kann verwendet werden, um den Betriebsmodus des EAs 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 MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linie kreuzt überkaufte/überverkaufte Niveaus (nach oben 70, nach unten 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- Ergebnis zurückgeben return(result); }
2.3. Erstellung eines Expert Advisors mit MQL5 Wizard
Die CBE_BE_MFI-Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei abe_be_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh geschehen. Nach dem Neustart des MetaEditors kannst du sie im MQL5 Wizard verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard
Gib den Namen des Expert Advisors an:

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

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

Abbildung 7. Signal Eigenschaften des Expert Advisors
Modul der 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 Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_MFI.mq5 gespeichert wird. Er 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; // Preisniveau zur Durchfü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 Durchfü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 zum Öffnen und Schließen von Positionen anzugeben.
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 durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine LongCondition()- und ShortCondition()-Methoden geben immer 0 zurück.
Die Stimmenergebnisse des Hauptmoduls werden auch bei der Durchschnittsbildung der "Stimmen" berücksichtigt. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, also müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Faktors müssen 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. Ergebnisse der historischen Rücktests
Betrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=5).
Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1), Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Bullish Engulfing /Bearish Engulfing + MFI
Die besten Eingabeparameter können mithilfe des Strategie Testers des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, erstellt mit MQL5 Wizard, ist in expert_abe_be_mfi.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 und 3 Weißen Soldaten + MFI