Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) zu erstellen, basierend auf den Standardbibliotheksklassen, die mit dem Client-Terminal geliefert werden. Wenn du mehr über die Erstellung von EAs mit dem MQL5 Wizard erfahren möchtest, schau dir den Artikel Vorgefertigte Expert Advisors im MQL5 Wizard erstellen an.
Die Grundidee ist einfach: Die Handels-Signalklasse wird von CExpertSignal abgeleitet. Du musst die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
In dem Buch "Strategien der besten Trader" (in Russisch) werden viele Handelsstrategien behandelt. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Indikatoren wie Stochastic, CCI, MFI und RSI bestätigt werden.
Am besten ist es, eine separate Klasse abzuleiten, die von CExpertSignal stammt, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern stammt, und die entsprechenden Features (z. B. Bestätigung durch Oszillatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, bestätigt durch den RSI-Indikator. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse und ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.
1. Umkehrkerzenmuster: "Dark Cloud Cover" und "Piercing Line"
1.1. Dark Cloud Cover
Das ist ein bärisches Umkehrmuster, das am Ende eines Aufwärtstrends auftritt. Am ersten Tag bildet sich eine lange weiße Kerze, gefolgt von einer Aufwärtslücke am zweiten Tag. Der zweite Tag schließt jedoch unterhalb des Mittelwerts des ersten Tages.

Abbildung 1. "Dark Cloud Cover" Kerzenmuster
Die Erkennung des "Dark Cloud Cover"-Mustern erfolgt in der Methode CheckPatternDarkCloudCover() der CCandlePattern-Klasse.
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Dark Cloud Cover" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover if((Close(2)-Open(2)>AvgBody(1)) && // (lange weiße) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (schließt innerhalb des vorherigen Körpers) (MidOpenClose(2)>CloseAvg(1)) && // (Aufwärtstrend) (Open(1)>High(2))) // (Öffnung auf neuem Hoch) return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) der CCandlePattern-Klasse wird verwendet, um die Bildung des "Dark Cloud Cover"-Kerzenmusters zu überprüfen.
1.2. Piercing Line
Die Abwärtslücke am zweiten Tag verstärkt den Abwärtstrend. Doch der Schlusskurs des zweiten Tages liegt über dem Mittelwert des Körpers des ersten Tages. Dies deutet darauf hin, dass sich möglicherweise ein Tiefpunkt bildet. Diese Preisbewegung ist mit Balkendiagrammen nicht annähernd so gut erkennbar wie mit Kerzendiagrammen. Je stärker der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein.

Fig. 2. "Piercing Line" Kerzenmuster
Die Erkennung des "Piercing Line"-Mustern erfolgt in der Methode CheckPatternPiercingLine() der CCandlePattern-Klasse.
//+------------------------------------------------------------------+ //| Überprüft die Bildung des "Piercing Line" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße) (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (schließt innerhalb des vorherigen Körpers) (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend) (Open(1)<Low(2))) // (Öffnung unterhalb des vorherigen Tiefs) return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) der CCandlePattern-Klasse wird verwendet, um die Bildung des "Piercing Line"-Kerzenmusters zu überprüfen.
2. Handelssignale, bestätigt durch den RSI-Indikator
Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den RSI-Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Niveaus liegen (40 für Long-Positionen und 60 für Short-Positionen).
Das Schließen einer offenen Position hängt von den Werten des RSI ab. Dies kann in zwei Fällen geschehen:
- Wenn der RSI das gegenüberliegende kritische Niveau erreicht hat (70 für Long-Positionen und 30 für Short-Positionen).
- Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI folgende Niveaus erreicht: 30 für Long-Positionen und 70 für Short-Positionen).

Fig. 3. "Dark Cloud Cover" Muster, bestätigt durch den RSI-Indikator
- int CDC_PL_RSI::LongCondition() - überprüft die Bedingungen für die Eröffnung einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück);
- int CDC_PL_RSI::ShortCondition() - überprüft die Bedingungen für die Eröffnung einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück).
2.1. Long-Position öffnen/Short-Position schließen
Die Bildung des "Piercing Line"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 betragen).
Die Short-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Markteintritt und -austritt | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::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 neuen Balken int idx =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Long-Position //--- Bildung des Piercing Line-Musters und RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40)) result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.2. Short-Position öffnen/Long-Position schließen
Die Bildung des "Dark Cloud Cover"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI der letzten abgeschlossenen Kerze muss größer als 60 sein).
Die Long-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Markteintritt und -austritt | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::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 neuen Balken int idx =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Short-Position //--- Bildung des Dark Cloud Cover-Musters und RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60)) result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach unten 70, nach unten 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- Rückgabe des Ergebnisses return(result); }
2.3. Expert Advisor mit MQL5 Wizard erstellen
Die CDC_PL_RSI-Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei adc_pl_rsi.mqh (siehe Anhänge) herunterladen und im Ordner client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das gleiche gilt für die Datei acandlepatterns.mqh. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Fig. 4. Expert Advisor mit MQL5 Wizard erstellen
Lass uns den Namen des Expert Advisors angeben:

Fig. 5. Allgemeine Eigenschaften des Expert Advisors
Danach wählen wir die verwendeten Module der Handelssignale aus.

Fig. 6. Signal-Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul der Handelssignale.
Hinzufügen des Moduls "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch RSI":

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 wird nicht verwendet":

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

Fig. 10. Geldverwaltungseigenschaften des Expert Advisors
Durch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_RSI.mq5 gespeichert wird. Dieser wird im terminal_data_folder\MQL5\Experts\ gespeichert.
Die standardmäßigen Eingabeparameter des generierten Expert Advisors:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =10; // Signalgrenzwert zum Öffnen [0...100] input int Signal_ThresholdClose =10; // Signalgrenzwert 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; // Signalgrenzwert zum Öffnen [0...100] input int Signal_ThresholdClose =20; // Signalgrenzwert 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 erlauben es, Grenzwerte für das Öffnen und Schließen von Positionen anzugeben.
Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte festgelegt:
- Position öffnen: 80;
- Position schließen: 40.
Der vom MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, der alle hinzugefügten Module enthält) 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, daher müssen wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Umstands müssen die Werte 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 dann erfolgt, wenn die Schließbedingungen erfüllt sind.
2.4. Ergebnisse der Backtests
Schauen wir uns die Backtesting-Ergebnisse des Expert Advisors anhand historischer Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14) an.
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 (Trailing nicht verwendet).

Fig. 11. Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + RSI
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 in expert_ad_pl_rsi.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