Startseite Systemhandel Beitrag

MQL5 Wizard: Handels-Signale mit 3 Schwarzen Krähen und 3 Weißen Soldaten + MFI

Anhang
287.zip (6.5 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) basierend auf den Standardbibliotheken zu erstellen, die mit dem Client-Terminal geliefert werden (siehe auch Fertige Expert Advisors im MQL5 Wizard erstellen für Details). Damit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handels-Signalklasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-Signale.

Die grundlegende Idee ist folgende: Die Klasse der Handels-Signale wird von CExpertSignal abgeleitet. Danach musst du die LongCondition() und ShortCondition() virtuellen Methoden mit deinen eigenen Methoden überschreiben.

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

Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel Bestätigungen durch Oszillatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 Schwarze Krähen/3 Weiße Soldaten" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, es ist ein einfaches Beispiel für die Nutzung zur Erstellung von Handelssignalen mit Kerzenmustern.

1. Umkehrkerzenmuster "3 Schwarze Krähen" und "3 Weiße Soldaten"

1.1. 3 Schwarze Krähen

Ein bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die jeweils niedriger als die vorherige Kerze schließen, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt.

Fig. 1.

Fig. 1. "3 Schwarze Krähen" Kerzenmuster

Die Erkennung des "3 Schwarzen Krähen" Musters erfolgt über die Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "3 Schwarzen Krähen" Kerzenmusters       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Schwarze Krähen 
   if((Open(3)-Close(3)>AvgBody(1)) && // (lange schwarze)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) &&
      (MidPoint(2)<MidPoint(3))      && // (niedrigere Mittelpunkte)
      (MidPoint(1)<MidPoint(2)))      return(true);
//---
   return(false);
  }

Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Schwarzen Krähen" Kerzenmusters zu überprüfen.

1.2. 3 Weiße Soldaten Kerzenmuster

Ein bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die höher schließen als die vorherige Kerze, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt.

Das Muster ist gültig, solange die Kerze des zweiten Tages im oberen Bereich der Spanne des ersten Tages eröffnet. Bis zum Ende des zweiten Tages sollte sie in der Nähe ihres Hochs schließen und einen sehr kleinen oder nicht vorhandenen oberen Schatten hinterlassen. Das gleiche Muster wird dann am dritten Tag wiederholt.

Fig. 2.

Fig. 2. "3 Weiße Soldaten" Kerzenmuster

Hier ist die Methode zur Erkennung des "3 Weiße Soldaten" Musters:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "3 Weiße Soldaten" Kerzenmusters      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 Weiße Soldaten
   if((Close(3)-Open(3)>AvgBody(1)) && // (lange weiße)
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))      && // (höhere Mittelpunkte)
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Weiße Soldaten" Kerzenmusters zu überprüfen.

2. Handelssignale, bestätigt durch den MFI Indikator

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. Dies kann in zwei Fällen erfolgen:

  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)

Fig. 3.

Fig. 3. "3 Schwarze Krähen" Muster, bestätigt durch den MFI Indikator

  • int CBC_WS_MFI::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 CBC_WS_MFI::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 "3 Weiße Soldaten" 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 Bedingungen für den Eintritt und Austritt aus dem Markt  |
//| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)          |
//| 2) Marktaustritt (Short-Position schließen, Ergebnis=40)        |
//+------------------------------------------------------------------+
int CBC_WS_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 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 3 Weiße Soldaten Musters und MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (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 "3 Schwarzen Krähen" 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 Bedingungen für den Eintritt und Austritt aus dem Markt  |
//| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)         |
//| 2) Marktaustritt (Long-Position schließen, Ergebnis=40)        |
//+------------------------------------------------------------------+
int CBC_WS_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 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 3 Schwarzen Krähen Musters und MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (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 eines Expert Advisors mit dem MQL5 Wizard

Die CBC_WS_MFI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei abc_ws_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 dem Neustart von MetaEditor verwenden.

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

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

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

Lass uns den Namen des Expert Advisors festlegen:

Fig. 5. Allgemeine Eigenschaften des Expert Advisors

Fig. 5. Allgemeine Eigenschaften des Expert Advisors

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

Fig. 6. Signal-Eigenschaften des Expert Advisors

Fig. 6. Signal-Eigenschaften des Expert Advisors

In unserem Fall verwenden wir nur ein Modul für Handelssignale.

Hinzufügen des Moduls "Signale basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten, bestätigt durch MFI":

Fig. 7. Signal-Eigenschaften des Expert Advisors

Fig. 7. Signal-Eigenschaften des Expert Advisors

Modul der Handelssignale hinzugefügt:

Fig. 8. Signal-Eigenschaften des Expert Advisors

Fig. 8. Signal-Eigenschaften des Expert Advisors

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

Fig. 9. Trailing-Eigenschaften des Expert Advisors

Fig. 9. Trailing-Eigenschaften des Expert Advisors

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

Fig. 10. Geldmanagement-Eigenschaften des Expert Advisors

Fig. 10. Geldmanagement-Eigenschaften des Expert Advisors

Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABC_WS_MFI.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\.

Die standardmäßigen 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 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)

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 Handels
input double         Signal_StopLevel       =0.0    // Stop Loss Niveau (in Punkten)
input double         Signal_TakeLevel       =0.0    // Take Profit Niveau (in Punkten)

Die Eingabeparameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen die Festlegung von Schwellenwerten für das Öffnen und Schließen von Positionen.

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

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

Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen für 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 Stimmenergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, also müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Wegen dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt 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 erfüllt sind.


2.4. Testergebnisse der Historie

Schauen wir uns die Backtests des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodMFI=37, MA_period=13) an.

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

Fig. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten + MFI

Fig. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten + MFI


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

Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist im expert_abc_ws_mfi.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)