Startseite Systemhandel Beitrag

MQL5 Wizard: Handelsignale mit Dark Cloud Cover und Piercing Line + CCI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) auf Basis der Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden. In dem Artikel Vorgefertigte Expert Advisors im MQL5 Wizard erstellen erhältst du weitere Informationen dazu. 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 grundlegende Idee ist folgende: Die Handelsignal-Klasse leitet sich von CExpertSignal ab. Anschließend musst du die LongCondition() und ShortCondition() virtuellen Methoden 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 umkehrende Kerzenmuster, die durch Stochastik, 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, die durch Kerzenmuster generiert werden, zu bestätigen, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf dem umkehrenden Kerzenmuster "Dark Cloud Cover/Piercing Line" basieren, welches durch den CCI Indikator bestätigt wird. Das Handelsignal-Modul basiert auf der CCandlePattern Klasse und ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.


1. Umkehrende Kerzenmuster: "Dark Cloud Cover" und "Piercing Line"

1.1. Dark Cloud Cover

Dies ist ein bärisches Umkehrmuster, das am Ende eines Aufwärtstrends auftritt. Am ersten Tag bildet sich eine lange weiße Kerze und am zweiten Tag entsteht eine Kurslücke nach oben. Allerdings schließt der zweite Tag unterhalb der Mitte der ersten Kerze.

Fig. 1.

Fig. 1. Das Kerzenmuster "Dark Cloud Cover"

Die Erkennung des "Dark Cloud Cover"-Mustern erfolgt über die Methode CheckPatternDarkCloudCover() der CCandlePattern Klasse:

//+------------------------------------------------------------------+
//| Überprüft die Formation des "Dark Cloud Cover" Kerzenmusters       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße Kerze)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (Schlusskurs innerhalb des vorherigen Körpers)
      (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)
      (Open(1)>High(2)))                // (Öffnung bei 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 Kurslücke nach unten am zweiten Tag setzt den Abwärtstrend fort. Der Schlusskurs des zweiten Tages liegt jedoch über der Mitte des Körpers des ersten Tages. Dies deutet darauf hin, dass sich möglicherweise ein Boden bildet. Diese Preisbewegung ist mit Balkendiagrammen nicht so leicht zu erkennen wie mit Kerzendiagrammen. Je tiefer der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein.

Fig. 2.

Fig. 2. Das Kerzenmuster "Piercing Line"

Die Erkennung des "Piercing Line"-Mustern erfolgt über die Methode CheckPatternPiercingLine() der CCandlePattern Klasse:

//+------------------------------------------------------------------+
//| Überprüft die Formation des "Piercing Line" Kerzenmusters          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße Kerze)
      (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze Kerze)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (Schluss 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 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 den kritischen Niveaus liegen (-50 für Long-Position und 50 für Short-Position).

Das Schließen der eröffneten Position hängt von den Werten des CCI ab. Dies kann in 2 Fällen erfolgen:

  1. wenn die CCI-Linie das gegenteilige kritische Niveau erreicht hat (80 für Long-Position und -80 für Short-Position)
  2. wenn das Umkehrsignal nicht bestätigt wird (wenn CCI die folgenden Niveaus erreicht: -80 für Long-Position und 80 für Short-Position)

Fig. 3.

Fig. 3. Das "Dark Cloud Cover" Muster, bestätigt durch den CCI-Indikator


  • int CDC_PL_CCI::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 CDC_PL_CCI::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 öffnen/Short-Position schließen

  1. Die Bildung des "Piercing Line"-Mustern muss durch den CCI Indikator bestätigt werden: CCI(1)<-50 (der Wert des CCI der letzten abgeschlossenen Kerze muss kleiner als -50 sein).

  2. 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 Einstieg und Ausstieg aus dem Markt                 |
//| 1) Markteintritt (Long-Position öffnen, Ergebnis=80)                  |
//| 2) Marktausstieg (Short-Position schließen, Ergebnis=40)                 |
//+------------------------------------------------------------------+
int CDC_PL_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 neuen Balken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Piercing Line Musters und CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (abwärts -80, abwärts -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 öffnen/Long-Position schließen

  1. Die Bildung des "Dark Cloud Cover"-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).

  2. Die Long-Position muss geschlossen werden, wenn der CCI Indikator das Niveau von -80 oder 80 nach unten überschreitet.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt                 |
//| 1) Markteintritt (Short-Position öffnen, Ergebnis=80)                 |
//| 2) Marktausstieg (Long-Position schließen, Ergebnis=40)                  |
//+------------------------------------------------------------------+
int CDC_PL_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 neuen Balken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Dark Cloud Cover Musters und CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (abwärts -80, abwärts 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }


2.3. Erstellen eines Expert Advisors mit dem MQL5 Wizard

Die Klasse CDC_PL_CCI ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acdc_pl_cci.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die Datei candlepatterns.mqh. Nach dem Neustart des MetaEditors kannst du sie im MQL5 Wizard verwenden.

Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Fig. 4. Erstellen eines Expert Advisors mit dem MQL5 Wizard

Fig. 4. Erstellen eines Expert Advisors mit dem MQL5 Wizard

Lass uns den Namen des Expert Advisors festlegen:

Fig. 5. Allgemeine Eigenschaften des Expert Advisors

Fig. 5. Allgemeine Eigenschaften des Expert Advisors

Danach müssen wir die Module der verwendeten Handelssignale auswählen.

Fig. 6. Signal Eigenschaften des Expert Advisors

Fig. 6. Signal Eigenschaften des Expert Advisors

In unserem Fall verwenden wir nur ein Modul für Handelssignale.

Hinzufügen des "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch CCI" Moduls der Handelssignale:

Fig. 7. Signal Eigenschaften des Expert Advisors

Fig. 7. Signal Eigenschaften des Expert Advisors

Modul der Handelssignale hinzugefügt:

Fig. 8. Signal Eigenschaften des Expert Advisors

Fig. 8. Signal Eigenschaften des Expert Advisors

Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" verwenden:

Fig. 9. Trailing Eigenschaften des Expert Advisors

Fig. 9. Trailing Eigenschaften des Expert Advisors

Was die Geldmanagement-Eigenschaften betrifft, werden wir "Handel mit fester Handelsgröße" verwenden:

Fig. 10. Geldmanagement Eigenschaften des Expert Advisors

Fig. 10. Geldmanagement Eigenschaften des Expert Advisors

Durch Drücken des "Fertig"-Buttons erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_CCI.mq5 gespeichert wird, und zwar im Verzeichnis terminal_data_folder\MQL5\Experts\.

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 für die 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;     // 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 für die 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 Handelssignal-Klasse haben wir feste Werte für die Schwellenwerte angegeben:

  • Long-Position öffnen: 80;
  • Short-Position schließen: 40;

Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen, indem er die "Stimmen" der Handelssignal-Module verwendet. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.

Die Stimmergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir dies bei der Festlegung der Schwellenwerte berücksichtigen. Aus diesem Grund müssen die Werte für 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. Ergebnisse der Rückwärtstests

Betrachten wir die Rückwärtstests des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, 2010.01.01-2011.03.16, PeriodCCI=15, MA_period=19).

Bei der Erstellung des Expert Advisors haben wir ein festes Volumen verwendet (Handel mit fester Lotgröße, 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 + CCI

Fig. 11. Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + CCI


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 Anhang expert_adc_pl_cci.mq5 zu finden.


Verwandte Beiträge

Kommentar (0)