Startseite Systemhandel Beitrag

Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen

Anhang
311.zip (6.48 KB, Herunterladen 2 mal)

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung fertiger Expert Advisors im MQL5 Wizard für Details). Du kannst deine Handelsideen schnell überprüfen, alles was du tun musst, ist deine eigene Handelsklassensignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Wie man ein Modul für Handelssignale erstellt.

Die Grundidee ist wie folgt: Die Klasse der Handelssignale leitet sich von CExpertSignal ab. Dann ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden zu überschreiben.

Es gibt ein Buch "Strategien der besten Händler" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden.

Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um das Auftreten von Kerzenmustern zu überprüfen. Um die durch Kerzenmuster generierten Handelssignale zu bestätigen, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel Bestätigung durch Oszillatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den CCI-Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der Klasse CCandlePattern, es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern.

1. Umkehrkerzenmuster "Bullish Harami" und "Bearish Harami"

1.1. Bullish Harami

Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster zeigt an, dass sich der fallende Trend (Abwärtstrend) umkehren könnte, und signalisiert, dass es ein guter Zeitpunkt ist, eine Long-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach oben. Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr.

Bullish Harami Umkehrmuster

Abb. 1. "Bullish Harami" Kerzenmuster

Die Erkennung des "Bullish Harami" Musters ist in der Methode CheckPatternBullishHarami() der Klasse CCandlePattern implementiert:

//+------------------------------------------------------------------+
//| Überprüft das Auftreten des "Bullish Harami" Kerzenmusters         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // die letzte abgeschlossene Kerze ist bullisch (weißer Tag)
     ((Open(2)-Close(2)>AvgBody(1))  && // die vorherige Kerze ist bärisch, ihr Körper ist größer als der Durchschnitt (lange schwarze)
     ((Close(1)<Open(2))              && // Schlusskurs der bullischen Kerze liegt unter dem Eröffnungskurs der bärischen Kerze
      (Open(1)>Close(2)))             && // Eröffnungskurs der bullischen Kerze liegt über dem Schlusskurs der bärischen Kerze
      (MidPoint(2)<CloseAvg(2)))         // Abwärtstrend
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) Methode der Klasse CCandlePattern wird verwendet, um das Auftreten des "Bullish Harami" Kerzenmusters zu überprüfen.


1.2. Bearish Harami

Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster zeigt an, dass sich der steigende Trend (Aufwärtstrend) umkehren könnte, und signalisiert, dass es ein guter Zeitpunkt ist, eine Short-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach unten.

Je kleiner die zweite (schwarze) Kerze ist, desto wahrscheinlicher ist die Umkehr.

Bearish Harami Umkehrmuster

Abb. 2. "Bearish Harami" Kerzenmuster

Die Erkennung des "Bearish Harami" Musters ist in der Methode CheckPatternBearishHarami() der Klasse CCandlePattern implementiert:

//+------------------------------------------------------------------+
//| Überprüft das Auftreten des "Bearish Harami" Kerzenmusters         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // letzte abgeschlossene Kerze ist bärisch (schwarzer Tag)
     ((Close(2)-Open(2)>AvgBody(1))  && // die vorherige Kerze ist bullisch, ihr Körper ist größer als der Durchschnitt (lange weiße)
     ((Close(1)>Open(2))              && // Schlusskurs der bärischen Kerze liegt über dem Eröffnungskurs der bullischen Kerze 
      (Open(1)<Close(2)))             && // Eröffnungskurs der bärischen Kerze liegt unter dem Schlusskurs der bullischen Kerze
      (MidPoint(2)>CloseAvg(2)))         // Aufwärtstrend
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) Methode der Klasse CCandlePattern wird verwendet, um das Auftreten des "Bearish Harami" Kerzenmusters zu überprüfen.


2. Handelssignale, die durch den CCI-Indikator bestätigt werden

Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den CCI-Indikator bestätigt werden. Der Wert des CCI muss größer/kleiner als die kritischen Werte (-50 für Long-Position und 50 für Short-Position) sein.

Das Schließen einer eröffneten Position hängt von den Werten des CCI ab. Dies kann in zwei 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 Umkehrsignal nicht bestätigt wird (wenn CCI die folgenden Niveaus erreicht: -80 für Long-Position und 80 für Short-Position).

Abb. 3. Bullish Harami-Muster, bestätigt durch CCI-Indikator

Abb. 3. "Bullish Harami" Muster, bestätigt durch CCI-Indikator

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

  1. Die Bildung des "Bullish Harami" 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 CBH_BH_CCI::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 Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zur Eröffnung einer Long-Position
//--- Bildung des Bullish Harami Musters und CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linienüberkreuzung 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;
//--- Rückgabe des Ergebnisses
   return(result);
  }

2.2. Short-Position eröffnen/Long-Position schließen

  1. Die Bildung des "Bearish Harami" 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 CBH_BH_CCI::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 Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zur Eröffnung einer Short-Position
//--- Bildung des Bearish Harami Musters und CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linienüberkreuzung 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;
//--- Rückgabe des Ergebnisses
   return(result);
  }


2.3. Erstellung eines Expert Advisors mit MQL5 Wizard

Die Klasse CBH_BH_CCI ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei acbh_bh_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die Datei candlepatterns.mqh. Du kannst sie nach dem Neustart des MetaEditors im MQL5 Wizard verwenden.

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

Abb. 4. Erstellung eines Expert Advisors mit MQL5 Wizard

Abb. 4. Erstellung eines Expert Advisors mit MQL5 Wizard

Lass uns den Namen des Expert Advisors festlegen:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

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

Abb. 6. 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 Moduls "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch CCI" für die Handelssignale:

Abb. 7. Signal-Eigenschaften des Expert Advisors

Abb. 7. Signal-Eigenschaften des Expert Advisors

Modul der Handelssignale hinzugefügt:

Abb. 8. 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":

Abb. 9. Trailing-Eigenschaften des Expert Advisors

Abb. 9. Trailing-Eigenschaften des Expert Advisors

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

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_CCI.mq5 gespeichert wird, in 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 zur Durchfü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 zur Durchfü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 die Angabe von Schwellenwerten zum Öffnen und Schließen von Positionen.

Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte angegeben:

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

Der durch den MQL5 Wizard generierte Expert Advisor eröffnet und schließt Positionen mithilfe der „Stimmen“ aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) 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, daher müssen wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt 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 wahr sind.


2.4. Ergebnisse der Backtesting-Historie

Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1). Der Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + CCI

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + CCI


Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.

Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_abh_bh_cci.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)