MQL5 Wizard: Handelsignale mit Bullish/Bearish Meeting Lines und CCI für MetaTrader 5

Mike 2011.03.24 03:05 22 0 0
Anhang

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.

Bullish Meeting Lines Muster

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.

Bearish Meeting Lines Muster

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:

  1. Wenn die CCI-Linie das gegenüberliegende kritische Niveau (80 für Long-Position und -80 für Short-Position) erreicht hat.
  2. 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).

Bullish Meeting Lines, bestätigt durch den CCI-Indikator

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

  1. 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).

  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 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

  1. 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).

  2. 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_Daten older\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:

MQL5 Wizard - Expert Advisor erstellen

Abb. 4. Erstellung eines Expert Advisors mit dem MQL5 Wizard

Gib den Namen des Expert Advisors an:

Allgemeine Eigenschaften des Expert Advisors

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Danach musst du die verwendeten Module für Handelssignale auswählen.

Signal-Eigenschaften des Expert Advisors

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:

Signal-Eigenschaften des Expert Advisors

Abb. 7. Signal-Eigenschaften des Expert Advisors

Modul der Handelssignale hinzugefügt:

Signal-Eigenschaften des Expert Advisors

Abb. 8. Signal-Eigenschaften des Expert Advisors

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

Trailing-Eigenschaften des Expert Advisors

Abb. 9. Trailing-Eigenschaften des Expert Advisors

Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen":

Geldmanagement-Eigenschaften des Expert Advisors

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).

Testergebnisse des Expert Advisors basierend auf Bullish/Bearish Meeting Lines + CCI

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.

Liste
Kommentar 0