Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) basierend auf den Standardbibliotheken zu erstellen, die mit dem Client-Terminal geliefert werden (siehe auch Fertige Expert Advisors im MQL5 Wizard erstellen für Details). Damit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handels-Signalklasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-Signale.
Die grundlegende Idee ist folgende: Die Klasse der Handels-Signale wird von CExpertSignal abgeleitet. Danach musst du die LongCondition() und ShortCondition() virtuellen Methoden 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 Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden.
Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel Bestätigungen durch Oszillatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 Schwarze Krähen/3 Weiße Soldaten" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, es ist ein einfaches Beispiel für die Nutzung zur 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 jeweils niedriger als die vorherige Kerze schließen, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt.

Fig. 1. "3 Schwarze Krähen" Kerzenmuster
Die Erkennung des "3 Schwarzen Krähen" Musters erfolgt über die Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse:
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 Schwarzen 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 CCandlePattern Klasse wird verwendet, um die Bildung des "3 Schwarzen Krähen" Kerzenmusters zu überprüfen.
1.2. 3 Weiße Soldaten Kerzenmuster
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 schließen als die vorherige Kerze, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt.
Das Muster ist gültig, solange die Kerze des zweiten Tages im oberen Bereich der Spanne des ersten Tages eröffnet. Bis zum Ende des zweiten Tages sollte sie in der Nähe ihres Hochs schließen und einen sehr kleinen oder nicht vorhandenen oberen Schatten hinterlassen. Das gleiche Muster wird dann am dritten Tag wiederholt.

Fig. 2. "3 Weiße Soldaten" Kerzenmuster
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 CCandlePattern Klasse wird verwendet, um die Bildung des "3 Weiße Soldaten" 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.
Der Abschluss einer offenen Position hängt von den Werten des MFI Indikators ab. Dies kann in zwei Fällen erfolgen:
- Wenn der MFI den gegenteiligen kritischen Wert erreicht hat (70 für Long-Positionen und 30 für Short-Positionen)
- Wenn das Umkehrsignal nicht bestätigt wird (wenn der MFI Indikator die folgenden Werte erreicht: 30 für Long-Positionen und 70 für Short-Positionen)

Fig. 3. "3 Schwarze Krähen" Muster, bestätigt durch den MFI Indikator
- int CBC_WS_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 CBC_WS_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 "3 Weiße Soldaten" 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 Werte (70 oder 30) nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::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 //--- Bildung des 3 Weiße Soldaten Musters und MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften 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 "3 Schwarzen Krähen" 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 Werte (70 oder 30) nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::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 //--- Bildung des 3 Schwarzen Krähen Musters und MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften 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 dem MQL5 Wizard
Die CBC_WS_MFI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei abc_ws_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das gleiche solltest du mit der Datei acandlepatterns.mqh tun. Du kannst sie im MQL5 Wizard nach dem Neustart von MetaEditor verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

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

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

Fig. 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 MFI":

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 verwenden "Trailing Stop nicht genutzt":

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

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_ABC_WS_MFI.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\.
Die standardmäßigen 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)
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; // 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 Eingabeparameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen die Festlegung von Schwellenwerten für das Öffnen und Schließen von Positionen.
Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte für die Schwellenwerte festgelegt:
- Position eröffnen: 80;
- Position schließen: 40.
Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen für Handelssignale. 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 Stimmenergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, also müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Wegen dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 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. Testergebnisse der Historie
Schauen wir uns die Backtests des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodMFI=37, MA_period=13) an.
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).

Fig. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten + MFI
Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist im expert_abc_ws_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: 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