Startseite Systemhandel Beitrag

MQL5 Wizard: Handels-Signale mit Dark Cloud Cover und Piercing Line + Stochastic für MetaTrader 5

Anhang
297.zip (6.61 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheksklassen basieren, die mit dem Client-Terminal geliefert werden (siehe auch Vorgefertigte Expert Advisors im MQL5 Wizard erstellen). Damit kannst du deine Handelsideen schnell überprüfen – du musst lediglich deine eigene Klasse für Handelssignale erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.

Die grundsätzliche Idee ist wie folgt: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Im nächsten Schritt 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 auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Oszillatoren 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. Für die Bestätigung von Handelssignalen, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten von CCandlePattern und dort die notwendigen Funktionen hinzuzufügen (zum Beispiel eine Bestätigung durch Oszillatoren).

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, welches durch den Stochastic-Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, 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

Dieses Muster ist eine bärische Umkehrformation, die am Ende eines Aufwärtstrends auftritt. An Tag 1 entsteht eine lange weiße Kerze und am Tag 2 wird eine Kurslücke nach oben gebildet. Allerdings schließt der zweite Tag unterhalb der Mitte des ersten Tages.

Dark Cloud Cover Muster

Abbildung 1: "Dark Cloud Cover" Kerzenmuster

Die Erkennung des "Dark Cloud Cover"-Musters wird in der Methode CheckPatternDarkCloudCover() der Klasse CCandlePattern durchgeführt:

//+------------------------------------------------------------------+
//| Ü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))            && // (Schluss 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 Klasse CCandlePattern wird verwendet, um die Bildung des "Dark Cloud Cover"-Kerzenmusters zu überprüfen.


1.2. Piercing Line

Der Kursrückgang am zweiten Tag setzt den Abwärtstrend fort. Allerdings schließt der zweite Tag über der Mitte des Körpers des ersten Tages. Dies deutet auf eine mögliche Bodenbildung hin. Diese Preisbewegung ist auf Balkendiagrammen nicht so deutlich zu erkennen wie auf Kerzendiagrammen. Je tiefer der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein.

Piercing Line Muster

Abbildung 2: "Piercing Line" Kerzenmuster

Die Erkennung des "Piercing Line"-Musters wird in der Methode CheckPatternPiercingLine() der Klasse CCandlePattern durchgeführt:

//+------------------------------------------------------------------+
//| Ü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))            && // (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 Klasse CCandlePattern wird verwendet, um die Bildung des "Piercing Line"-Kerzenmusters zu überprüfen.

2. Handelssignale, bestätigt durch den Stochastic-Indikator

Die Handelssignale zum Öffnen von Long- oder Short-Positionen müssen durch den Stochastic-Oszillator bestätigt werden. Die %D-Linie muss über/unter dem entsprechenden kritischen Niveau (30 oder 70) liegen.

Das Schließen der offenen Position hängt von den Werten des %D-Indikators ab. Dies kann in zwei Fällen geschehen:

  • Wenn die %D-Linie das gegenteilige kritische Niveau erreicht hat (80 für Long-Positionen und 20 für Short-Positionen)
  • Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie die folgenden Niveaus erreicht: 20 für Long-Positionen und 80 für Short-Positionen)

Dark Cloud Cover Muster, bestätigt durch Stochastic Indikator

Abbildung 3: "Dark Cloud Cover" Muster, bestätigt durch den Stochastic-Indikator


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

  1. Die Bildung des "Piercing Line"-Musters muss durch den Stochastic-Indikator bestätigt werden: StochSignal(1)<30 (Der Wert der Signal-Linie des Stochastic-Indikators der letzten abgeschlossenen Kerze muss kleiner als 30 sein).

  2. Die Short-Position muss geschlossen werden, wenn die Signal-Linie des Stochastic-Indikators die 20 oder 80 Niveaus nach oben gekreuzt hat.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für Eintritt und Austritt aus dem Markt |
//| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)         |
//| 2) Marktaustritt (Short-Position schließen, Ergebnis=40)       |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::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 neuen Kerzen
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Piercing Line-Musters und Signal-Linie<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (StochSignal(1)<30))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen einer Short-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (abwärts 20, aufwärts 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     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 Stochastic-Indikator bestätigt werden: StochSignal(1)>70 (Der Wert der Signal-Linie des Stochastic-Indikators der letzten abgeschlossenen Kerze muss größer als 70 sein).

  2. Die Long-Position muss geschlossen werden, wenn die Signal-Linie des Stochastic-Indikators die 80 oder 20 Niveaus nach unten gekreuzt hat.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für Eintritt und Austritt aus dem Markt |
//| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)         |
//| 2) Marktaustritt (Long-Position schließen, Ergebnis=40)       |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::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 neuen Kerzen
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Dark Cloud Cover-Musters und Signal-Linie>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen einer Long-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (abwärts 80, aufwärts 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }

2.3. Erstellung eines Expert Advisors mit MQL5 Wizard

Die CDC_PL_Stoch-Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei adc_pl_stoch.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\MQL5\Include\Expert\Signal\MySignals-Ordner speichern. Das Gleiche gilt für die Datei candlepatterns.mqh. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.

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

MQL5 Wizard Schritt 1

Abbildung 4: Erstellung eines Expert Advisors mit MQL5 Wizard

Gib den Namen des Expert Advisors an:

Allgemeine Eigenschaften des Expert Advisors

Abbildung 5: Allgemeine Eigenschaften des Expert Advisors

Danach musst du die Module der verwendeten Handelssignale auswählen.

Signal Eigenschaften des Expert Advisors

Abbildung 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 Stochastic":

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 werden "Trailing Stop nicht verwendet" wählen:

Trailing Eigenschaften des Expert Advisors

Abbildung 9: Trailing Eigenschaften des Expert Advisors

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

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_ADC_PL_Stoch.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\.

Die Standard-Eingabeparameter des generierten Expert Advisors:

//--- Eingaben für Hauptsignal
input int            Signal_ThresholdOpen   =10;     // Schwellenwert für Signal zum Öffnen [0...100]
input int            Signal_ThresholdClose  =10     // Schwellenwert für Signal zum Schließen [0...100]
input double         Signal_PriceLevel      =0.0    // Preisniveau zur 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 Hauptsignal
input int            Signal_ThresholdOpen   =40;     // Schwellenwert für Signal zum Öffnen [0...100]
input int            Signal_ThresholdClose  =20     // Schwellenwert für Signal zum Schließen [0...100]
input double         Signal_PriceLevel      =0.0    // Preisniveau zur 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 zu definieren.

Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben:

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

Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe von "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.

Die Abstimmungsergebnisse des Hauptmoduls werden auch bei der Durchschnittsbildung der "Stimmen" verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diese Tatsache bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die Schwellenwerte für 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. Ergebnisse der historischen Rücktests

Betrachten wir die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-02.02.2011, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27).

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

Testergebnisse des Expert Advisors

Abbildung 11: Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + Stochastic

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_adc_pl_stoch.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)