Startseite Systemhandel Beitrag

MQL5 Wizard: Handels-Signale mit Hammer/Hängendem Mann und CCI

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

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Standardbibliotheksklassen basieren, die mit dem Client-Terminal geliefert werden (siehe Fertige Expert Advisors im MQL5 Wizard erstellen für Details). Damit kannst du deine Handelsideen schnell überprüfen, du musst nur deine eigene Handelssignal-Klasse erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.

Die grundsätzliche Idee ist folgende: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Danach ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit eigenen Methoden zu ü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 Indikatoren bestätigt werden.

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

Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Hammer/Hängender Mann" basieren, das durch den CCI Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse und ist ein einfaches Beispiel für die Verwendung 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 Schatten, die nach einem Abwärtstrend entsteht. Das "Hammer"-Muster deutet auf das Ende eines bärischen Trends hin.

Die Farbe des Kerzenkörpers ist nicht entscheidend, aber ein bullischer Hammer deutet auf ein höheres bullisches Potenzial hin. Der Körper des "Hammer"-Musters entsteht oft in der Nähe des Minimums der vorherigen Kerze. Ein längerer unterer Schatten und ein kürzerer oberer Schatten führen zu einem höheren Umkehrpotenzial.


Abb. 1.

Abb. 1. "Hammer" Kerzenmuster

Die Erkennung des "Hammer"-Musters erfolgt über die Methode CheckPatternHammer() 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 1/3
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // Körperspanne
      return(true);
//---
   return(false);
  }

Die Methode CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) 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 Schatten, die nach einem Aufwärtstrend entsteht. Das "Hängender Mann"-Muster deutet auf das Ende eines bullischen Trends hin.

Die Farbe des Kerzenkörpers ist nicht entscheidend, aber eine bärische Kerze deutet auf ein höheres bärisches Potenzial hin. Der Körper des "Hängenden Mannes"-Musters entsteht oft in der Nähe des Maximums der vorherigen Kerze. Ein längerer unterer Schatten und ein kürzerer oberer Schatten führen zu einem höheren Umkehrpotenzial.

Abb. 2.

Abb. 2. "Hängender Mann" Kerzenmuster

Die Erkennung des "Hängenden Mann"-Musters erfolgt über die Methode CheckPatternHangingMan() 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 1/3
      (Close(1)>Close(2)) && (Open(1)>Open(2)))                  // Körperspanne
      return(true);
//---
   return(false);
  }

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


2. Handelssignale, bestätigt durch den CCI Indikator

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

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

  1. Wenn die CCI-Linie das gegenüberliegende kritische Niveau erreicht hat (80 für Long-Position und -80 für Short-Position)
  2. Wenn das Umkehrsignal nicht bestätigt wird (wenn CCI die folgenden Werte erreicht: -80 für Long-Position und 80 für Short-Position)

Abb. 3.

Abb. 3. Das "Hammer" Muster, bestätigt durch CCI Indikator


  • int CH_HM_CCI::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_CCI::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 CCI Indikator bestätigt werden: CCI(1)<-50 (der Wert des CCI der letzten abgeschlossenen Kerze muss kleiner als -50 sein).

  2. Die Short-Position muss geschlossen werden, wenn der CCI Indikator das kritische Niveau -80 nach oben oder das kritische Niveau 80 nach unten ü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 CH_HM_CCI::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 an Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen für das Eröffnen einer Long-Position
//--- Bildung des Hammer-Musters und CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (CCI(1)<-50))
     result=80;
//--- Überprüfung der Bedingungen für das Schließen der Short-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach unten -80, nach oben -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     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 CCI Indikator bestätigt werden: CCI(1)>50 (der Wert des CCI Indikators der letzten abgeschlossenen Kerze muss größer als 50 sein).

  2. Die Long-Position muss geschlossen werden, wenn der CCI Indikator die -80- oder 80-Niveaus 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 CH_HM_CCI::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 an Nachrichtenbalken
   int idx   =StartIndex();
//--- Überprüfung der Bedingungen für das Eröffnen einer Short-Position
//--- Bildung des Hängenden Mannes-Musters und CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (CCI(1)>50))
     result=80;
//--- Überprüfung der Bedingungen für das Schließen der Long-Position
//--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach unten -80, nach oben 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- Ergebnis zurückgeben
   return(result);
  }


2.3. Erstellen eines Expert Advisors mit dem MQL5 Wizard

Die CH_HM_CCI Klasse ist nicht in den Standardbibliotheksklassen enthalten; um sie zu verwenden, musst du die Datei ach_hm_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die candlepatterns.mqh-Datei. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditors verwenden.

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

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

Abb. 4. Erstellen 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 Hammer/Hängendem Mann, bestätigt durch CCI" Moduls für Handelssignale:

Abb. 7. Signal-Eigenschaften des Expert Advisors

Abb. 7. Signal-Eigenschaften des Expert Advisors

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

In Bezug auf die Geldverwaltungs-Eigenschaften verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldverwaltungs-Eigenschaften des Expert Advisors

Abb. 10. Geldverwaltungs-Eigenschaften des Expert Advisors

Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_AH_HM_CCI.mq5 gespeichert wird, es wird in 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 ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.

Im Code der LongCondition() und ShortCondition() Methoden der Handelssignal-Klasse haben wir feste Werte für die Schwellenwerte angegeben:

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

Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen mithilfe der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) wird ebenfalls verwendet, aber die LongCondition() und ShortCondition() Methoden 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, 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 erfüllt sind.


2.4. Ergebnisse der Backtesting-Historie

Betrachten wir das Backtesting des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodCCI=25, MA_period=5).

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

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

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


Die besten Einstellungen für die Eingabeparameter können mithilfe des Strategietesters des MetaTrader 5 Client-Terminals gefunden werden.

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


Verwandte Beiträge

Kommentar (0)