Startseite Systemhandel Beitrag

MQL5 Wizard: Handelsignale mit Hammer/Hängendem Mann und MFI für MetaTrader 5

Anhang
316.zip (6.48 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung von fertigen Expert Advisors im MQL5 Wizard für Details). Du kannst 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.

Das Grundkonzept ist wie folgt: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Danach 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 Stochastik, CCI, MFI und RSI Indikatoren bestätigt werden.

Es ist am besten, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelssignale, die durch die Kerzenmuster generiert werden, reicht es aus, die Klasse abgeleitet von CCandlePattern zu schreiben und die notwendigen Funktionen dort hinzuzufügen (zum Beispiel die Bestätigung durch Indikatoren).

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Hammer/Hängender Mann" basieren, das durch den MFI Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse; es ist ein einfaches Beispiel für die Nutzung zur Erstellung von Handelssignalen mit Kerzenmustern.

1. Umkehrkerzenmuster "Hammer" und "Hängender Mann"

1.1. Hammer

Der "Hammer" ist eine Kerze mit einem kleinen Körper und einem langen unteren Docht, die nach einem Abwärtstrend gebildet wird. Das "Hammer"-Muster zeigt das Ende eines bärischen Trends an.

Die Farbe des Kerzenkörpers ist nicht entscheidend, aber ein bullischer Hammer zeigt ein höheres bullisches Potenzial an. Der Körper des "Hammer"-Musters wird oft in der Nähe des Minimums der vorherigen Kerze gebildet. Der längere untere Docht und der kürzere obere Docht führen zu einem höheren Potenzial des Umkehrmusters.

Abb. 1. Das

Abb. 1. Das "Hammer"-Kerzenmuster

Die Erkennung des "Hammer"-Musters erfolgt in der CheckPatternHammer()-Methode der CCandlePattern Klasse:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "Hammer"-Kerzenmusters          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                          && // Abwärtstrend
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // Körper im oberen Drittel
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                 // Körperlücke
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_HAMMER)-Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Hammer"-Kerzenmusters zu überprüfen.


1.2. Hängender Mann

Der "Hängende Mann" ist eine Kerze mit einem kleinen Körper und einem langen unteren Docht, die nach einem Aufwärtstrend gebildet wird. Das "Hängender Mann"-Muster zeigt das Ende eines bullischen Trends an.

Die Farbe des Kerzenkörpers ist nicht entscheidend, aber eine bärische Kerze zeigt ein höheres bärisches Potenzial an. Der Körper des "Hängenden Mannes"-Musters wird oft in der Nähe des Maximums der vorherigen Kerze gebildet. Der längere untere Docht und der kürzere obere Docht führen zu einem höheren Potenzial des Umkehrmusters.

Abb. 2. Das

Abb. 2. Das "Hängender Mann"-Kerzenmuster

Die Erkennung des "Hängenden Mann"-Musters erfolgt in der CheckPatternHangingMan()-Methode der CCandlePattern Klasse:

//+------------------------------------------------------------------+
//| Überprüft die Bildung des "Hängenden Mann"-Kerzenmusters       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hängender Mann
   if((MidPoint(1)>CloseAvg(2))                          && // Aufwärtstrend
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // Körper im oberen Drittel
      (Close(1)>Close(2)) && (Open(1)>Open(2)))                 // Körperlücke
      return(true);
//---
   return(false);
  }

Die CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN)-Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Hängenden Mann"-Kerzenmusters zu überprüfen.


2. Handelssignale, die durch den MFI-Indikator bestätigt werden

Die Handelssignale zum Öffnen von Long- oder Short-Positionen 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.

Das Schließen einer offenen Position hängt von den Werten des MFI-Indikators ab. Dies kann in 2 Fällen erfolgen:

  • Wenn der MFI das entgegengesetzte kritische Niveau erreicht hat (70 für Long-Positionen und 30 für Short-Positionen)
  • 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)

Abb. 3. Das

Abb. 3. Das "Hammer"-Muster, bestätigt durch den MFI-Indikator

  • int CH_HM_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 CH_HM_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 "Hammer"-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 Niveaus (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 CH_HM_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 Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei Nachrichtenbalken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Hammer-Musters und MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (MFI(1)<40))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signal-Linienüberkreuzung der überkauften/verkauften 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 "Hängenden Mann"-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 Niveaus (70 oder 30) nach oben ü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 CH_HM_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 Handelsbedingungen bei jedem Tick
//--- idx=1 - in diesem Fall überprüft der EA Handelsbedingungen nur bei Nachrichtenbalken
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Hängenden Mannes-Musters und MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (MFI(1)>60))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signal-Linienüberkreuzung der überkauften/verkauften 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 CH_HM_MFI-Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die ah_hm_mfi.mqh-Datei herunterladen (siehe Anhänge) und sie in den client_terminal_data older\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche gilt für die acandlepatterns.mqh-Datei. Du kannst sie nach dem Neustart des MetaEditors im MQL5 Wizard 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 festlegen:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Abb. 5. Allgemeine Eigenschaften des Expert Advisors

Danach müssen wir die verwendeten Module der 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 der Handelssignale.

Hinzufügen des "Signale basierend auf Hammer/Hängendem Mann, bestätigt durch MFI"-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 werden "Trailing Stop nicht verwendet" nutzen:

Abb. 9. Trailing-Eigenschaften des Expert Advisors

Abb. 9. Trailing-Eigenschaften des Expert Advisors

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

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors

Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_AH_HM_MFI.mq5 gespeichert wird und sich im 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 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 Deals
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 Deals
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 das Festlegen von Schwellenwerten zum Öffnen und Schließen von Positionen.

Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte der Schwellenwerte festgelegt:

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

Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" von den Modulen der Handelssignale. 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 Abstimmungsergebnisse des Hauptmoduls werden auch zur "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diesen Umstand 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 Signal_StopLevel und Signal_TakeLevel Eingabeparameter sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen wahr sind.


2.4. Ergebnisse der Backtesting-Historie

Schauen wir uns das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodMFI=47, MA_period=5) 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).

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Hammer/Hängendem Mann + MFI

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Hammer/Hängendem Mann + MFI


Das beste Set von Eingabeparametern kann mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.

Der Code des durch den MQL5 Wizard erzeugten Expert Advisors ist in expert_ah_hm_mfi.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)