Der MQL5 Wizard ermöglicht es dir, sofort einsatzbereite Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden (siehe Einsatzbereite Expert Advisors im MQL5 Wizard erstellen für weitere Details). Du kannst 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: So erstellst du ein Modul für Handelsignale.
Die Grundidee ist folgende: Die Klasse für Handelsignale leitet sich von CExpertSignal ab. Als nächstes musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch Stochastik, CCI, MFI und RSI Indikatoren bestätigt werden.
Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die erforderlichen Funktionen hinzuzufügen (z.B. Bestätigung durch Indikatoren).
Hier betrachten wir die Signale, die auf den Umkehrkerzenmustern "Bullish/Bearish Meeting Lines" basieren, die durch den CCI (Commodity Channel Index) Indikator bestätigt werden. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern.
1. "Meeting Lines" Umkehrkerzenmuster
1.1. Bullish Meeting Lines
Das Muster besteht aus zwei Kerzen (bearish und bullish) mit gleich (oder sehr nah) liegenden Schlusskursen. Der Körper beider Kerzen muss länger als die durchschnittliche Körperlänge sein.
Das "Bullish Meeting Lines" Muster zeigt eine Umkehrung eines Abwärtstrends an.

Abb. 1. "Bullish Meeting Lines" Muster
Die Erkennung des "Bullish Meeting Lines" Musters erfolgt in der Methode CheckPatternBullishMeetingLines() der CCandlePattern Klasse:
//+--------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Meeting Lines" Kerzenmusters | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // lange schwarze ((Close(1)-Open(1))>AvgBody(1)) && // lange weiße (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Meeting Lines" Kerzenmusters zu überprüfen.
1.2. Bearish Meeting Lines
Das Muster besteht aus zwei Kerzen (bullish und bearish) mit gleich (oder sehr nah) liegenden Schlusskursen. Der Körper beider Kerzen muss länger als die durchschnittliche Körperlänge sein.
Das "Bearish Meeting Lines" Muster zeigt eine Umkehrung eines Aufwärtstrends an.

Abb. 2. "Bearish Meeting Lines" Muster
Die Erkennung des "Bearish Meeting Lines" Musters erfolgt in der Methode CheckPatternBearishMeetingLines() der CCandlePattern Klasse:
//+--------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Meeting Lines" Kerzenmusters | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // lange weiße ((Open(1)-Close(1))>AvgBody(1)) && // lange schwarze (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Meeting Lines" 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 Wert des CCI muss über/unter den kritischen Levels (-50 für Long-Position und 50 für Short-Position) liegen.
Das Schließen einer geöffneten Position hängt von den Werten des CCI ab. Dies kann in 2 Fällen erfolgen:
- Wenn die CCI-Linie das gegenüberliegende kritische Niveau (80 für Long-Position und -80 für Short-Position) erreicht hat.
- Wenn das umgekehrte Signal nicht bestätigt wird (wenn CCI die folgenden Levels erreicht: -80 für Long-Position und 80 für Short-Position).

Abb. 3. Das "Bullish Meeting Lines" Muster, bestätigt durch den CCI-Indikator
- int CML_CCI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und schließt die Short-Position (gibt 40 zurück);
- int CML_CCI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und schließt die Long-Position (gibt 40 zurück).
2.1. Long-Position eröffnen/Short-Position schließen
Die Bildung des "Bullish Meeting Lines" 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 -80 nach oben überschreitet oder das kritische Niveau 80 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CML_CCI::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 Bullish Meeting Lines Musters und CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach unten -80, nach unten -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 eröffnen/Long-Position schließen
Die Bildung des "Bearish Meeting Lines" 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 das kritische Niveau -80 oder 80 nach unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CML_CCI::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 Bearish Meeting Lines Musters und CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50)) result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach unten -80, nach unten 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 dem MQL5 Wizard
Die CML_CCI-Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die acml_cci.mqh-Datei herunterladen (siehe Anhänge) und sie im Client_Terminal_Datenolder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die candlepatterns.mqh-Datei. Du kannst sie im MQL5 Wizard nach dem Neustart von MetaEditor verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

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

Abb. 5. Allgemeine Eigenschaften des Expert Advisors
Danach musst du die verwendeten Module für Handelssignale auswählen.

Abb. 6. Signal-Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul für Handelssignale.
Hinzufügen des "Signals basierend auf Bullish/Bearish Meeting Lines, bestätigt durch CCI" Moduls für Handelssignale:

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

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

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

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors
Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_AML_CCI.mq5 gespeichert wird. Er wird im terminal_data_folder\MQL5\Experts\ gespeichert.
Die Standard-Inputparameter 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 Deals 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 Deals 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 die festen Werte der Schwellenwerte angegeben:
- Position eröffnen: 80;
- Position schließen: 40.
Der vom MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen anhand der "Stimmen" der Handelsmodules. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber die Methoden LongCondition() und ShortCondition() geben immer 0 zurück.
Die Stimmen der Hauptmodule werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir dieser Tatsache bei der Festlegung der Schwellenwerte Rechnung tragen. Aufgrund dieser Tatsache müssen die Werte ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt 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. Backtesting-Ergebnisse
Schauen wir uns das Backtesting des Expert Advisors anhand historischer Daten (EURUSD H1, Testzeitraum: 01.01.2000-16.03.2011, PeriodCCI=18, MA_period=3) an.
Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Trading Fixed Lot, 0.1), der Trailing Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + CCI
Die besten Einstellungen der Eingabeparameter können mit dem Strategy Tester des MetaTrader 5 Client-Terminals ermittelt werden.
Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_aml_cci.mq5 angehängt.
Kommentar 0