Handelsstrategien mit MQL5 Wizard: Dark Cloud Cover und Piercing Line + MFI

Mike 2011.02.25 19:49 38 0 0
Anhang

Der MQL5 Wizard ermöglicht es Ihnen, fertige Expert Advisors zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (weitere Details finden Sie in MQL5 Wizard: Fertige Expert Advisors erstellen). Damit können Sie Ihre Handelsideen schnell überprüfen, indem Sie Ihre eigene Klasse für Handelssignale erstellen. Die Struktur dieser Klasse und ein Beispiel finden Sie im Artikel MQL5 Wizard: Modul für Handelssignale erstellen.

Die grundlegende Idee ist die folgende: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Danach müssen die virtuellen Methoden LongCondition() und ShortCondition() durch Ihre eigenen Methoden überschrieben werden.

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

Die beste Vorgehensweise ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung von Handelssignalen, die durch Kerzenmuster erzeugt werden, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist, und die erforderlichen Funktionen (z.B. Bestätigung durch Oszillatoren) dort hinzuzufügen.

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern.


1. Umkehrkerzenmuster: "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 Gaps nach oben. Der zweite Tag schließt jedoch unterhalb der Mitte der ersten Kerze.

Dark Cloud Cover Kerzenmuster

Abb. 1. "Dark Cloud Cover" Kerzenmuster

Die Erkennung des "Dark Cloud Cover" Musters wird in der Methode CheckPatternDarkCloudCover() der CCandlePattern Klasse umgesetzt:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "Dark Cloud Cover" Kerzenmusters       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (schließt innerhalb des vorherigen Körpers)
      (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)
      (Open(1)>High(2)))                // (öffnet 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 Gaps nach unten am zweiten Tag festigen den Abwärtstrend. Der Schlusskurs des zweiten Tages liegt jedoch über der Mitte des Körpers des ersten Tages. Dies deutet für die Bären darauf hin, dass sich ein Tief bilden könnte. Diese Preisbewegung ist mit Balkendiagrammen nicht so deutlich erkennbar wie mit Kerzendiagrammen. Je mehr der Schlusskurs am zweiten Tag in den ersten Tag eindringt, desto wahrscheinlicher ist der Erfolg des Umkehrsignals.

Piercing Line Kerzenmuster

Abb. 2. "Piercing Line" Kerzenmuster

Die Erkennung des "Piercing Line" Musters wird in der Methode CheckPatternPiercingLine() der CCandlePattern Klasse umgesetzt:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "Piercing Line" Kerzenmusters          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße)
      (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (schließt innerhalb des vorherigen Körpers) 
      (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend)
      (Open(1)<Low(2)))                // (öffnet 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 MFI-Indikator

Die Handelssignale zum Öffnen von Long- oder Short-Positionen 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.

Das Schließen einer geöffneten Position hängt von den Werten des MFI-Indikators ab. Dies kann in zwei Fällen geschehen:

  1. Wenn der MFI den gegenteiligen kritischen Wert erreicht hat (70 für Long-Positionen und 30 für Short-Positionen)
  2. Wenn das Umkehrsignal nicht bestätigt wird (wenn der MFI-Indikator die folgenden Werte erreicht: 30 für Long-Positionen und 70 für Short-Positionen)

Bestätigtes Dark Cloud Cover Muster durch den MFI Indikator

Abb. 3. Bestätigtes "Dark Cloud Cover" Muster durch den MFI Indikator


  • int CDC_PL_MFI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und das Schließen einer Short-Position (gibt 40 zurück);
  • int CDC_PL_MFI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und das Schließen einer Long-Position (gibt 40 zurück).

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

  1. Die Bildung des "Morning Star" Musters muss durch den MFI Indikator bestätigt werden: MFi(1)<40 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein).

  2. Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (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 CDC_PL_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 Nachrichten-Balken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Piercing Line Musters und MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linien-Crossover 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 "Dark Cloud Cover" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein).

  2. Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (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 CDC_PL_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 Nachrichten-Balken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Dark Cloud Cover Musters und MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linien-Crossover 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 Klasse CDC_PL_MFI ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, müssen Sie die Datei adc_pl_mfi.mqh herunterladen (siehe Anhänge) und im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh gemacht werden. Sie können sie nach einem Neustart des MetaEditors im MQL5 Wizard verwenden.

Um einen Expert Advisor zu erstellen, starten Sie den MQL5 Wizard:

Expert Advisor erstellen mit MQL5 Wizard

Abb. 4. Expert Advisor erstellen mit MQL5 Wizard

Geben Sie den Namen des Expert Advisors an:

Allgemeine Eigenschaften des Expert Advisors

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Danach müssen wir 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 Moduls "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch MFI" für Handelssignale:

Signal Eigenschaften des Expert Advisors

Abb. 7. Signal Eigenschaften des Expert Advisors

Das Handelsmodul wurde hinzugefügt:

Signal Eigenschaften des Expert Advisors

Abb. 8. Signal Eigenschaften des Expert Advisors

Sie können beliebige Trailing-Eigenschaften auswählen, wir werden jedoch "Trailing Stop nicht verwendet" nutzen:

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_ADC_PL_MFI.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts\ befindet.

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 für den Handel
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 den Handel
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 LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben:

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

Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelssignalmodulen. 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 Ergebnisse der Stimmen des Hauptmoduls werden auch beim "Durchschnitt der Stimmen" genutzt. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 eingestellt werden.

Die Werte der Input-Parameter 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 Rücktests

Betrachten wir die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11).

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

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


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

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


Liste
Kommentar 0