Startseite Systemhandel Beitrag

MQL5 Wizard: Handels-signale mit Bullish/Bearish Meeting Lines und Stochastic für MetaTrader 5

Anhang
318.zip (6.59 KB, Herunterladen 0 mal)

Der MQL5 Wizard ermöglicht es dir, sofort einsatzbereite Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen zu erstellen, die mit dem Client-Terminal geliefert werden (für Details siehe MQL5 Wizard: Erstellung von fertigen Expert Advisors). Mit diesem Tool kannst du deine Handelsideen schnell überprüfen, indem du deine eigene Handelsignal-Klasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-signale.

Das Grundkonzept ist folgendes: Die Klasse der Handels-signale leitet sich von CExpertSignal ab. Im nächsten Schritt musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.

Im Buch "Strategien der besten Trader" (auf Russisch) werden viele Handelsstrategien behandelt. Wir konzentrieren uns auf umkehrende Kerzenmuster, die durch den Stochastic, CCI, MFI und RSI Indikatoren bestätigt werden.

Der beste Ansatz ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der von den Kerzenmustern generierten Handelssignale reicht es aus, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (z.B. Bestätigung durch Indikatoren) hinzuzufügen.

Hier betrachten wir die Signale, die auf den "Bullish/Bearish Meeting Lines" umkehrenden Kerzenmustern basieren, die durch den Stochastic Indikator bestätigt werden. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse und bietet ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.

1. "Meeting Lines" umkehrende Kerzenmuster

1.1. Bullish Meeting Lines

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

Das "Bullish Meeting Lines" Muster weist auf eine Umkehrung eines Abwärtstrends hin.

Abb. 1. Bullish Meeting Lines Muster

Abb. 1. Bullish Meeting Lines Muster

Die Erkennung des "Bullish Meeting Lines" Musters erfolgt in der Methode CheckPatternBullishMeetingLines() der CCandlePattern Klasse:

//+--------------------------------------------------------------------+
//| Ü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))             && // langer weißer
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // doji Schluss
      return(true);
//---
   return(false);
  }

Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) 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 ähnlichen) Schlusskursen. Die Körper der beiden Kerzen müssen größer sein als die durchschnittliche Körperlänge.

Das "Bearish Meeting Lines" Muster weist auf eine Umkehrung eines Aufwärtstrends hin.

Abb. 2. Bearish Meeting Lines Muster

Abb. 2. Bearish Meeting Lines Muster

Die Erkennung des "Bearish Meeting Lines" Musters erfolgt in der Methode CheckPatternBearishMeetingLines() der CCandlePattern Klasse:

//+--------------------------------------------------------------------+
//| Ü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 Schluss
      return(true);
//---
   return(false);
  }

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


2. Handelssignale, bestätigt durch den Stochastic Indikator

Die Handelssignale zur Eröffnung von Long- oder Short-Positionen müssen durch den Stochastic Oszillator bestätigt werden. Die %D-Linie muss über/unter dem entsprechenden kritischen Niveau (30 oder 70) liegen.

Das Schließen einer geöffneten Position hängt von den Werten des %D-Indikators ab. Dies kann in zwei Fällen geschehen:

  • Wenn die %D-Linie das gegenteilige kritische Niveau erreicht hat (80 für Long-Positionen und 20 für Short-Positionen).
  • Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie die folgenden Niveaus erreicht: 20 für Long-Positionen und 80 für Short-Positionen).

Abb. 3. Bearish Meeting Lines Muster, bestätigt durch den Stochastic Indikator

Abb. 3. Bearish Meeting Lines Muster, bestätigt durch den Stochastic Indikator

  • int CML_Stoch::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 CML_Stoch::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 öffnen/Short-Position schließen

  1. Die Bildung des "Bullish Meeting Lines" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss kleiner als 30 sein).

  2. Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 20 oder 80 Niveaus nach oben gekreuzt hat.

//+------------------------------------------------------------------+
//| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt |
//| 1) Markteintritt (Long-Position öffnen, Ergebnis=80) |
//| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) |
//+------------------------------------------------------------------+
int CML_Stoch::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 Nachrichtenkerzen
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Long-Position
//--- Bildung des Bullish Meeting Lines Musters und Signallinie<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (StochSignal(1)<30))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Short-Position
//--- Signallinien-Crossover der überkauften/überverkauften Niveaus (abwärts 20, aufwärts 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- Rückgabe des Ergebnisses
   return(result);
  }

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

  1. Die Bildung des "Bearish Meeting Lines" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)>70 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss größer als 70 sein).

  2. Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 80 oder 20 Niveaus nach unten gekreuzt hat.

//+------------------------------------------------------------------+
//| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt |
//| 1) Markteintritt (Short-Position öffnen, Ergebnis=80) |
//| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) |
//+------------------------------------------------------------------+
int CML_Stoch::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 Nachrichtenkerzen
  int idx   =StartIndex();
//--- Überprüfung der Bedingungen zum Öffnen einer Short-Position
//--- Bildung des Bearish Meeting Lines Musters und Signallinie>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (StochSignal(1)>70))
     result=80;
//--- Überprüfung der Bedingungen zum Schließen der Long-Position
//--- Signallinien-Crossover der überkauften/überverkauften Niveaus (abwärts 80, aufwärts 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- Rückgabe des Ergebnisses
   return(result);
  }

2.3. Erstellung des Expert Advisors mit MQL5 Wizard

Die CML_Stoch Klasse ist nicht in den Standardbibliotheksklassen enthalten, um sie zu verwenden, musst du die Datei acml_stoch.mqh herunterladen (siehe Anlagen) und sie im Client_terminal_data\Ordner\MQL5\Include\Expert\Signal\MySignals speichern. Das gleiche sollte mit der Datei candlepatterns.mqh erfolgen. 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 des Expert Advisors mit MQL5 Wizard

Abb. 4. Erstellung des 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 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 die Handelssignale.

Hinzufügen des "Signale basierend auf Bullish/Bearish Meeting Lines, bestätigt durch Stochastic" Moduls für 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 Eigenschaften des Geldmanagements betrifft, verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldmanagement Eigenschaften des Expert Advisors

Abb. 10. Geldmanagement Eigenschaften des Expert Advisors

Nach dem Drücken des "Fertig"-Buttons erhalten wir den Code des generierten Expert Advisors, der in Expert_AML_Stoch.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)

müssen 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose 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 Schwelle angegeben:

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

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

Die Ergebnisse der Abstimmung des Hauptmoduls werden ebenfalls in der Durchschnittsbildung der "Stimmen" verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diesen Faktor bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Faktors müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt 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 wahr sind.


2.4. Historische Backtesting-Ergebnisse

Schauen wir uns das Backtesting des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3) an.

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

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + Stochastic

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + Stochastic"


Die besten Eingabeparameter können mithilfe des Strategietesters des MetaTrader 5 Client-Terminals gefunden werden.

Der Code des Expert Advisors, erstellt mit MQL5 Wizard, ist im expert_aml_stoch.mq5 angehängt.


Verwandte Beiträge

Kommentar (0)