Startseite Systemhandel Beitrag

MQL5 Wizard: Handelsignale mit Bullish/Bearish Harami und RSI für MetaTrader 5

Anhang
313.zip (6.47 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht es, maßgeschneiderte Expert Advisors (EAs) zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung von maßgeschneiderten Expert Advisors im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen – alles, was du tun musst, ist, deine eigene Handelsignal-Klasse 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 wie folgt: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.

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

Es ist am besten, eine separate Klasse abzuleiten, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch die Kerzenmuster erzeugt werden, zu bestätigen, reicht es aus, eine Klasse abzuleiten, 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 Umkehrmuster "Bullish Harami/Bearish Harami" basieren, das durch den RSI-Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, 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 innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der fallende Trend (Abwärtstrend) möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, eine Long-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach oben.

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

Abb. 1. Bullish Harami Kerzenmuster

Abb. 1. Bullish Harami Kerzenmuster

Die Erkennung des "Bullish Harami"-Musters erfolgt in der 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)
     ((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 CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)-Methode 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 innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der steigende Trend (Aufwärtstrend) möglicherweise umkehrt, und signalisiert, dass es ein guter Zeitpunkt ist, eine Short-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach unten.

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

Abb. 2. Bearish Harami Kerzenmuster

Abb. 2. Bearish Harami Kerzenmuster

Die Erkennung des "Bearish Harami"-Musters erfolgt in der 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)
     ((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 CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)-Methode der CCandlePattern-Klasse wird verwendet, um die Bildung des "Bearish Harami"-Kerzenmusters zu überprüfen.


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

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 (40 für Long-Position und 60 für Short-Position) liegen.

Der Schluss einer geöffneten Position hängt von den Werten des RSI ab. Dies kann in 2 Fällen erfolgen:

  • Wenn der RSI das gegenüberliegende kritische Level erreicht hat (70 für Long-Position und 30 für Short-Position).
  • Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI die folgenden Levels erreicht: 30 für Long-Position und 70 für Short-Position).

Abb. 3. Bullish Harami Muster, bestätigt durch den RSI-Indikator

Abb. 3. Bullish Harami Muster, bestätigt durch den RSI-Indikator

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

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

  1. Die Bildung des "Bullish Harami"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 sein).

  2. Die Short-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Levels 70 oder 30 nach oben überschreitet.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für den Markteintritt und -ausstieg                 |
//| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)                  |
//| 2) Marktausgang (Short-Position schließen, Ergebnis=40)                 |
//+------------------------------------------------------------------+
int CBH_BH_RSI::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 News-Bars
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Bullish Harami-Musters und RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (RSI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linien-Crossover der überkauften/verkauften 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 öffnen/Long-Position schließen

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

  2. Die Long-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Levels 70 oder 30 nach unten überschreitet.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für den Markteintritt und -ausstieg                 |
//| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)                 |
//| 2) Marktausgang (Long-Position schließen, Ergebnis=40)                  |
//+------------------------------------------------------------------+
int CBH_BH_RSI::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 News-Bars
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Bearish Harami-Musters und RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (RSI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linien-Crossover der überkauften/verkauften 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 dem MQL5 Wizard

Die CBH_BH_RSI-Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, ist es notwendig, die Datei acml_rsi.mqh herunterzuladen (siehe Anhänge) und sie im client_terminal_data\Ordner\MQL5\Include\Expert\Signal\MySignals zu speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditors verwenden.

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

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

Abb. 4. Erstellung eines Expert Advisors mit dem 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 Module der verwendeten 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 "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch RSI"-Moduls der Handelssignale:

Abb. 7. Signal-Eigenschaften des Expert Advisors

Abb. 7. Signal-Eigenschaften des Expert Advisors

Modul der Handelssignale 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

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

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

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

Die Standard-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 Geschäfts
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 zur Ausführung eines Geschäfts
input double         Signal_StopLevel       =0.0    // Stop-Loss-Niveau (in Punkten)
input double         Signal_TakeLevel       =0.0    // Take-Profit-Niveau (in Punkten)

Die Signal_ThresholdOpen/Signal_ThresholdClose Eingabeparameter ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen anzugeben.

Im Code der LongCondition() und ShortCondition()-Methoden der Handelssignalklasse haben wir die festen Werte der Schwellenwerte angegeben:

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

Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mit den "Stimmen" der Handelssignalmodule. 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 Stimmresultate des Hauptmoduls werden auch in der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die 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 wahr sind.


2.4. Ergebnisse der historischen Backtests

Betrachten wir die Backtests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010 - 11.03.2011, PeriodRSI=37, MA_period=7).

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 Bullish Harami/Bearish Harami + RSI

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + RSI


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

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


Verwandte Beiträge

Kommentar (0)