MQL5 Wizard: Handelssignale mit Bullish/Bearish Meeting Lines und RSI im MetaTrader 5

Mike 2011.03.24 20:39 23 0 0
Anhang

Der MQL5 Wizard ermöglicht es, vorgefertigte Expert Advisors (EAs) auf Basis der Standardbibliotheks Klassen, die mit dem Client-Terminal geliefert werden, zu erstellen (siehe Erstellung von vorgefertigten Expert Advisors im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen, du musst nur 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.

Das grundlegende Konzept ist folgendes: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. 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.

Die beste Methode ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch Kerzenmuster generiert werden, zu bestätigen, reicht es aus, die Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel die Bestätigung durch Oszillatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Meeting Lines" basieren, das durch den RSI (Relative Strength Index) 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. "Meeting Lines" Umkehrkerzenmuster

1.1. Bullish Meeting Lines

Das Muster besteht aus zwei Kerzen (bärisch und bullish) mit gleichen (oder sehr nahen) Schlusskursen. Der Körper der beiden Kerzen muss größer sein als die durchschnittliche Körperlänge.

Das "Bullish Meeting Lines" Muster zeigt eine Umkehrung eines Abwärtstrends an.

Fig. 1. Bullish Meeting Lines Muster

Fig. 1. Bullish Meeting Lines Muster

Die Erkennung des "Bullish Meeting Lines" Musters wird durch die Methode CheckPatternBullishMeetingLines() der CCandlePattern Klasse implementiert:

//+--------------------------------------------------------------------+
//| Überprüft die Bildung des "Bullish Meeting Lines" Kerzenmusters    |            
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // lange schwarze
     ((Close(1)-Open(1))>AvgBody(1))             && // lange weiße
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // doji close
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Meeting Lines" Kerzenmusters zu überprüfen.


1.2. Bearish Meeting Lines

Das Muster besteht aus zwei Kerzen (bullish und bearish) mit gleichen (oder sehr nahen) Schlusskursen. Der Körper der beiden Kerzen muss größer sein als die durchschnittliche Körperlänge.

Das "Bearish Meeting Lines" Muster zeigt eine Umkehrung eines Aufwärtstrends an.

Fig. 2. Bearish Meeting Lines Muster

Fig. 2. Bearish Meeting Lines Muster

Die Erkennung des "Bearish Meeting Lines" Musters wird durch die Methode CheckPatternBearishMeetingLines() der CCandlePattern Klasse implementiert:

//+--------------------------------------------------------------------+
//| Überprüft die Bildung des "Bearish Meeting Lines" Kerzenmusters    |            
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // lange weiße
     ((Open(1)-Close(1)>AvgBody(1))             && // lange schwarze
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // doji close
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Meeting Lines" Kerzenmusters zu überprüfen.



2. Handelssignale, bestätigt durch den RSI Indikator

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

Das Schließen der geöffneten Position hängt von den Werten des RSI ab. Dies kann in 2 Fällen erfolgen:

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

Fig. 3. Bearish Meeting Lines Muster, bestätigt durch den RSI Indikator

Fig. 3. "Bearish Meeting Lines" Muster, bestätigt durch den RSI Indikator


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

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

  1. Die Bildung des "Bullish Meeting Lines" 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 Niveaus 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 CML_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 Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen für das Öffnen einer Long-Position
//--- Bildung des Bullish Meeting Lines Musters und RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (RSI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen für das Schließen der Short-Position
//--- Signal-Linienkreuzung der überkauften/überverkauften Niveaus (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 "Bearish Meeting Lines" 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 die kritischen Niveaus 70 oder 30 nach unten ü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 CML_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 Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen für das Öffnen einer Short-Position
//--- Bildung des Bearish Meeting Lines Musters und RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (RSI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen für das Schließen der Long-Position
//--- Signal-Linienkreuzung der überkauften/überverkauften Niveaus (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 CML_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 in den client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals zu speichern. Das gleiche 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:

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

Hinzufügen des "Signale basierend auf Bullish/Bearish Meeting Lines, bestätigt durch den RSI" Moduls der Handelssignale:

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 verwendet":

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"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_AML_RSI.mq5 gespeichert wird. Dieser wird im terminal_data_folder\MQL5\Experts\ gespeichert.

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 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 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 Signal_ThresholdOpen/Signal_ThresholdClose Eingabeparameter erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.

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

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

Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelsmodulen. Die Stimme des Hauptmoduls (als Container, das besteht aus allen hinzugefügten Modulen) wird ebenfalls verwendet, aber die 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 der Handelssignale, daher müssen wir diesen Punkt bei der Festlegung der Schwellenwerte berücksichtigen. Aus diesem Grund müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt werden.

Die Werte der Signal_StopLevel und Signal_TakeLevel Eingabeparameter 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 Rücktestgeschichte

Betrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3).

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

Fig. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + RSI

Fig. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + RSI


Das beste Set von Eingabeparametern kann mithilfe des Strategietesters des MetaTrader 5 Client-Terminals gefunden werden.

Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist im Anhang expert_aml_rsi.mq5 enthalten.


Liste
Kommentar 0