Startseite Systemhandel Beitrag

Handelsstrategie mit MQL5 Wizard: Bullish und Bearish Harami Signale mit MFI

Anhang
312.zip (6.49 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht die Erstellung von fertigen Expert Advisors (EAs), die auf den Klassen der Standardbibliothek basieren, die mit dem Client-Terminal geliefert werden (siehe auch Erstellung von fertigen Expert Advisors im MQL5 Wizard für Details). Somit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handelsklassensignale erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Modul für Handelssignale.

Die grundlegende Idee ist wie folgt: Die Handelsklassensignale leiten sich von CExpertSignal ab. Anschließend musst du die LongCondition() und ShortCondition() virtuellen Methoden mit deinen eigenen Methoden überschreiben.

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

Am besten ist es, eine separate Klasse abzuleiten, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelssignale, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten, 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 Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, und 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 deutet darauf hin, dass der fallende Trend (Abwärtstrend) sich umkehren könnte und signalisiert, dass es ein guter Zeitpunkt ist, in eine Long-Position einzutreten. Die zweite Kerze eröffnet mit einer Kurslücke nach oben.

Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr.

Bullish Harami Kerzenmuster

Abbildung 1. Bullish Harami Kerzenmuster

Die Erkennung des "Bullish Harami" Musters erfolgt über die Methode CheckPatternBullishHarami() der CCandlePattern Klasse:

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

Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung 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 deutet darauf hin, dass der steigende Trend (Aufwärtstrend) sich umkehren könnte und signalisiert, dass es ein guter Zeitpunkt ist, in eine Short-Position einzutreten. Die zweite Kerze eröffnet mit einer Kurslücke nach unten.

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

Bearish Harami Kerzenmuster

Abbildung 2. Bearish Harami Kerzenmuster

Die Erkennung des "Bearish Harami" Musters erfolgt über die Methode CheckPatternBearishHarami() der CCandlePattern Klasse:

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

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


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

Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den MFI Indikator bestätigt werden. Der Wert des MFI Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen.

Der Abschluss einer offenen Position hängt von den Werten des MFI Indikators ab. Er kann in 2 Fällen erfolgen:

  • Wenn der MFI das entgegengesetzte kritische Niveau erreicht hat (70 für Long-Position und 30 für Short-Position).
  • Wenn das umgekehrte Signal nicht bestätigt ist (wenn der MFI Indikator die folgenden Niveaus erreicht: 30 für Long-Position und 70 für Short-Position).

Bullish Harami Muster, bestätigt durch MFI

Abbildung 3. Bullish Harami Muster, bestätigt durch MFI


  • int CBH_BH_MFI::LongCondition() - überprüft die Bedingungen für das Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück);
  • int CBH_BH_MFI::ShortCondition() - überprüft die Bedingungen für das Öffnen einer Short-Position (gibt 80 zurück) und das 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 MFI Indikator bestätigt werden: MFI(1)<40 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss unter 40 liegen).

  2. Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben ü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_MFI::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 Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei News-Bars
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Bullish Harami Musters und MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }


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

  1. Die Bildung des "Bearish Harami" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss über 60 liegen).

  2. Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben ü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_MFI::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 Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei News-Bars
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Bearish Harami Musters und MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 70, nach unten 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }


2.3. Erstellung des Expert Advisors mit MQL5 Wizard

Die CBH_BH_MFI Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei abh_bh_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche solltest du mit der Datei acandlepatterns.mqh tun. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.

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

MQL5 Wizard - Expert Advisor erstellen

Abbildung 4. Expert Advisor erstellen mit MQL5 Wizard

Lass uns den Namen des Expert Advisors angeben:

Allgemeine Eigenschaften des Expert Advisors

Abbildung 5. Allgemeine Eigenschaften des Expert Advisors

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

Signal Eigenschaften des Expert Advisors

Abbildung 6. Signal Eigenschaften des Expert Advisors

In unserem Fall verwenden wir nur ein Modul der Handelssignale.

Wir fügen das Modul "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch MFI" hinzu:

Signal Eigenschaften des Expert Advisors

Abbildung 7. Signal Eigenschaften des Expert Advisors

Modul der Handelssignale hinzugefügt:

Signal Eigenschaften des Expert Advisors

Abbildung 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

Abbildung 9. Trailing Eigenschaften des Expert Advisors

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

Geldmanagement Eigenschaften des Expert Advisors

Abbildung 10. Geldmanagement Eigenschaften des Expert Advisors

Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_MFI.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts\ befindet.

Die Standard-Eingabeparameter des generierten Expert Advisors:

//--- Eingaben für 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)

muss ersetzt werden durch:

//--- Eingaben für 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 anzugeben.

Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir feste Schwellenwerte angegeben:

  • Position öffnen: 80;
  • Position schließen: 40.

Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen anhand der "Stimmen" der Module der Handelssignale. Die Stimme des Hauptmoduls (als Container, es besteht aus allen hinzugefügten Modulen) wird ebenfalls verwendet, aber die Methoden LongCondition() und ShortCondition() geben immer 0 zurück.

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

Schauen wir uns den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodMFI=37, MA_period=11) an.

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

Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + MFI

Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + MFI


Das beste Set von Eingabeparametern kann mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.

Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist in expert_abh_bh_mfi.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)