Startseite Systemhandel Beitrag

MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI

Anhang
288.zip (6.49 KB, Herunterladen 2 mal)

Der MQL5 Wizard ermöglicht es, fertig programmierte Expert Advisors (EAs) zu erstellen, basierend auf den Standardbibliotheksklassen, die zusammen mit dem Client-Terminal geliefert werden (eine detaillierte Beschreibung findest du im Artikel Fertige Expert Advisors im MQL5 Wizard erstellen). Mit diesem Tool kannst du deine Handelsideen schnell überprüfen – alles, was du tun musst, ist, deine eigene Klasse für Handelssignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.

Die grundlegende Idee ist folgende: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Es ist notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden zu überschreiben.

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

Am besten ist es, eine separate Klasse, die von CExpertSignal abgeleitet ist, zur Überprüfung der Bildung von Kerzenmustern zu erstellen. Zur Bestätigung der Handelssignale, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Features (zum Beispiel die Bestätigung durch Oszillatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 Schwarze Krähen/3 Weiße Soldaten" basieren, welches durch den Relative Strength Index (RSI) Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse und ist ein einfaches Beispiel für die 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 Kerzenkörpern, die unter dem Schlusskurs des vorherigen Tages geschlossen wurden, wobei der Eröffnungskurs jeder Sitzung innerhalb des Körpers der vorherigen Kerze liegt.

Abb. 1.

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

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

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "3 Schwarze 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))     && // (untere 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 Schwarze 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 Kerzenkörpern, die über dem Schlusskurs des vorherigen Tages geschlossen wurden, wobei der Eröffnungskurs jeder Sitzung innerhalb des Körpers der vorherigen Kerze liegt.

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 nahe ihrem Hoch schließen, wobei ein sehr kleiner oder nicht vorhandener oberer Schatten bleibt. Das gleiche Muster wird dann am dritten Tag wiederholt.

Abb. 2.

Abb. 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, die durch den RSI Indikator bestätigt werden

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

Das Schließen einer offenen Position hängt von den Werten des RSI ab. Dies kann in zwei Fällen geschehen:

  1. Wenn der RSI das gegenteilige kritische Level erreicht hat (70 für Long-Positionen und 30 für Short-Positionen)
  2. Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI die folgenden Levels erreicht: 30 für Long-Positionen und 70 für Short-Positionen)

Abb. 3.

Abb. 3. "3 Schwarze Krähen" Muster, bestätigt durch den Stochastik Indikator


  • int CML_RSI::LongCondition() - prüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen einer Short-Position (gibt 40 zurück);
  • int CML_RSI::ShortCondition() - prüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und zum Schließen einer 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 RSI Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 betragen).

  2. Die Short-Position muss geschlossen werden, wenn der RSI Indikator das kritische Level 70 oder 30 nach oben überschreitet.

//+------------------------------------------------------------------+
//| Überprüft Bedingungen für den Markteintritt und -austritt         |
//| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)           |
//| 2) Marktaustritt (Short-Position schließen, Ergebnis=40)         |
//+------------------------------------------------------------------+
int CBC_WS_RSI::LongCondition()
  {
   int result=0;
//--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen
//--- idx=0 - in diesem Fall prüft der EA Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall prüft der EA Handelsbedingungen nur bei Nachrichtenbalken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des 3 Weiße Soldaten Musters und RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen einer Short-Position
//--- Signal-Linien-Crossover der überkauften/überverkauften Levels (nach oben 30, nach oben 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }

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

  1. Die Bildung des "3 Schwarze Krähen" Musters muss durch den RSI Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein).

  2. Die Long-Position muss geschlossen werden, wenn der RSI Indikator das kritische Level 70 oder 30 nach unten überschreitet.

//+------------------------------------------------------------------+
//| Überprüft Bedingungen für den Markteintritt und -austritt         |
//| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)          |
//| 2) Marktaustritt (Long-Position schließen, Ergebnis=40)         |
//+------------------------------------------------------------------+
int CBC_WS_RSI::ShortCondition()
  {
   int result=0;
//--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen
//--- idx=0 - in diesem Fall prüft der EA Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall prüft der EA Handelsbedingungen nur bei Nachrichtenbalken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des 3 Schwarze Krähen Musters und RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen einer Long-Position
//--- Signal-Linien-Crossover der überkauften/überverkauften Levels (nach unten 70, nach unten 30)
  if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }


2.3. Erstellung eines Expert Advisors mit MQL5 Wizard

Die CML_RSI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie nutzen zu können, musst du die Datei acml_rsi.mqh herunterladen (siehe Anhänge) und im Ordner client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche gilt für die Datei candlepatterns.mqh. Du kannst sie nach dem Neustart von MetaEditor 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 angeben:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Danach müssen wir die verwendeten Module für 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 3 Schwarze Krähen/3 Weiße Soldaten" für Handelssignale:

Abb. 7. Signal Eigenschaften des Expert Advisors

Abb. 7. Signal Eigenschaften des Expert Advisors

Das Modul für Handelssignale wurde 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

Hinsichtlich der Eigenschaften des Geldmanagements verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldmanagement Eigenschaften des Expert Advisors

Abb. 10. Geldmanagement Eigenschaften des Expert Advisors

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

Die Standard-Eingabeparameter des generierten Expert Advisors:

//--- Eingaben für das Hauptsignal
input int            Signal_ThresholdOpen   =10;     // Signal-Schwellenwert für Öffnen [0...100]
input int            Signal_ThresholdClose  =10;     // Signal-Schwellenwert für Schließen [0...100]
input double         Signal_PriceLevel      =0.0;    // Preisniveau zur Ausführung eines Handels
input double         Signal_StopLevel       =50.0;   // Stop-Loss-Level (in Punkten)
input double         Signal_TakeLevel       =50.0   // Take-Profit-Level (in Punkten)

müssen ersetzt werden durch:

//--- Eingaben für das Hauptsignal
input int            Signal_ThresholdOpen   =40;     // Signal-Schwellenwert für Öffnen [0...100]
input int            Signal_ThresholdClose  =20;     // Signal-Schwellenwert für Schließen [0...100]
input double         Signal_PriceLevel      =0.0;    // Preisniveau zur Ausführung eines Handels
input double         Signal_StopLevel       =0.0    // Stop-Loss-Level (in Punkten)
input double         Signal_TakeLevel       =0.0    // Take-Profit-Level (in Punkten)

Die Signal_ThresholdOpen/Signal_ThresholdClose Eingabeparameter erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.

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

  • Open Position: 80;
  • Close Position: 40.

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

Die Ergebnisse der Stimmen des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieses Umstands müssen 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 dann erfolgt, wenn die Schließbedingungen erfüllt sind.


2.4. Backtesting-Ergebnisse

Betrachten wir das Backtesting des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51).

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

Abb. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarze Krähen/3 Weiße Soldaten + RSI

Abb. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarze Krähen/3 Weiße Soldaten + RSI


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

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


Verwandte Beiträge

Kommentar (0)