Startseite Systemhandel Beitrag

MQL5 Wizard: Handelssignale basierend auf Umkehrkerzenmustern für MetaTrader 5

Anhang
268.zip (4.16 KB, Herunterladen 0 mal)

MQL5 Wizard ermöglicht die automatische Erstellung von Expert Advisors, ohne dass eine Programmierung erforderlich ist (siehe auch MQL5 Wizard: Expert Advisors ohne Programmierung erstellen).

Die Klasse CSignalCandles bietet Handelssignale, die auf Umkehrkerzenmustern basieren. Die Strategie nennt sich „Signale basierend auf Umkehrkerzenmustern“ (bei der automatischen Erstellung eines EAs im MQL5 Wizard).

Die Idee hinter diesem System besteht darin, Umkehrmuster durch die Berechnung von zusammengesetzten Kerzen zu identifizieren. Diese Umkehrmuster ähneln den „Hammer“ und „Hängenden Mann“ Mustern aus der japanischen Kerzenanalyse. Dabei wird jedoch die zusammengesetzte Kerze verwendet, anstelle einzelner Kerzen, und es ist nicht erforderlich, dass der Kern der zusammengesetzten Kerze klein ist, um die Umkehr zu bestätigen.

Die Eingabeparameter sind:

  • Range - maximal Anzahl der Kerzen, die bei der Berechnung der zusammengesetzten Kerze verwendet werden.
  • Minimum - minimale Größe der zusammengesetzten Kerze (in klassischen Punkten).
  • ShadowBig und ShadowSmall - Schatten (in Einheiten der zusammengesetzten Kerze).
  • Limit, StopLoss und TakeProfit - Eröffnungspreis, SL und TP-Niveaus, die relativ zum Schlusskurs der zusammengesetzten Kerze definiert sind (Einheiten der zusammengesetzten Kerze).
  • Expiration - Ablaufzeit der Order (in Kerzen), bei Handel mit ausstehenden Aufträgen (Limit!=0.0).

Die Umkehrkerzenmuster werden wie folgt bestimmt:

Es werden die Parameter der zusammengesetzten Kerze berechnet, beginnend mit der zuletzt abgeschlossenen Kerze (mit Index 1) bis zur Anzahl der Kerzen, die durch den Eingabeparameter Range definiert sind. Wenn die Größe der zusammengesetzten Kerze größer ist als der durch den Eingabeparameter Minimum festgelegte Wert, werden die Umkehrbedingungen der zusammengesetzten Kerze durch eine Analyse ihrer Schatten überprüft.

Die Stärke der Bären wird durch die Größe des oberen Schattens der zusammengesetzten Kerze charakterisiert, während die Stärke der Bullen durch die Größe des unteren Schattens charakterisiert wird.

  • Um die Umkehr des bärischen Trends (und den Beginn des bullischen Trends) zu bestätigen, ist Folgendes erforderlich: Die Größe des unteren Schattens (Bullenstärke) muss größer sein als der durch den Eingabeparameter ShadowBig definierte Wert. Die Größe des oberen Schattens (Bärenstärke) muss kleiner sein als der durch den Eingabeparameter ShadowSmall definierte Wert.
  • Um die Umkehr des bullischen Trends (und den Beginn des bärischen Trends) zu bestätigen, ist Folgendes erforderlich: Die Größe des oberen Schattens (Bärenstärke) muss größer sein als der durch den Eingabeparameter ShadowBig definierte Wert. Die Größe des unteren Schattens (Bullenstärke) muss kleiner sein als der durch den Eingabeparameter ShadowSmall definierte Wert.

Zusätzlich zur Umkehrstrategie können auch Durchbruchstrategien verwendet werden, indem ein negativer Wert für den Eingabeparameter Limit angegeben wird (siehe MQL5 Wizard - Handelssignale basierend auf dem Crossover von zwei EMAs mit intraday Zeitfilter).

Je nach Limit werden drei verschiedene Möglichkeiten für den Markteintritt genutzt:

  1. Limit>0. Es wird bei einer Rückbewegung im Preis eingetreten, besser als der Marktpreis (Die Buy Limit oder Sell Limit Aufträge werden je nach Handelssignal platziert).
  2. Limit<0. Es wird in Richtung der Preisbewegung eingetreten (Die Buy Stop oder Sell Stop Aufträge werden je nach Handelssignal verwendet).
  3. Limit=0. Es wird zu den Marktpreisen gehandelt.

Diese Strategie wird in der Klasse CSignalCandles implementiert.

Abbildung 1. Handelssignale basierend auf Umkehrkerzenmustern

Abbildung 1. Handelssignale basierend auf Umkehrkerzenmustern


Handelssignale

Die Handelssignale sind in der Klasse CSignalCandles implementiert, es gibt eine Funktion Candle(), die für die Analyse verwendet wird:

int  Candle(int ind); // Gibt die positive/negative Zahl zurück, abhängig vom Typ der zusammengesetzten Kerze
                        // der zurückgegebene Wert ist die Anzahl der Kerzen in der zusammengesetzten Kerze (beginnend bei ind)

Mehrere Kerzen (Bars) können beim Bau der zusammengesetzten Kerze verwendet werden. Die minimale Anzahl der Kerzen wird durch den Parameter Range definiert. In einigen Fällen kann die zusammengesetzte Kerze mit weniger Kerzen als Range gebildet werden (wenn die Bedingungen für Größe/Schatten erfüllt sind). Die Funktion Candle gibt 0 zurück, wenn die zusammengesetzte Kerze nicht gebildet werden kann.


1. Lange Position öffnen

Um eine lange Position zu eröffnen, wird eine bullische zusammengesetzte Kerze benötigt. Die Funktion prüft dies und gibt zurück, wenn die zusammengesetzte Kerze noch nicht gebildet wurde oder die zusammengesetzte Kerze bärisch ist. Andernfalls berechnet sie die Größe der zusammengesetzten Kerze (benötigt für die Berechnung von Preis, SL und TP Niveaus) und kalkuliert die Preisniveaus für den ausstehenden Auftrag.

Beachten Sie, dass der Typ des ausstehenden Auftrags (Buy Limit oder Buy Stop) vom Vorzeichen des Eingabeparameters Limit abhängt (wenn Limit=0 oder |Preis-Ask|<Stoppslevel, wird ein Markt-Kaufauftrag platziert, wenn Limit>0, wird ein Buy Limit ausstehender Auftrag platziert, wenn Limit<0, wird ein Buy Stop ausstehender Auftrag platziert).

//+------------------------------------------------------------------+
//| Prüft die Bedingungen zum Öffnen einer langen Position (Kauf)                |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   //--- prüft das Vorhandensein der bullischen zusammengesetzten Kerze
   if(Candle(1)<=0) return(false);
   //--- Größe der zusammengesetzten Kerze ermitteln
   double size=m_high_composite-m_low_composite;
   //--- Preis des ausstehenden Auftrags berechnen
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
   //--- Stop Loss Preis berechnen
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
   //--- Take Profit Preis berechnen
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
   //--- Ablaufzeit der Order festlegen
   expiration+=m_expiration*PeriodSeconds(m_period);
   //--- die Bedingungen sind erfüllt, return true
   return(true);
  }

2. Lange Position schließen

Wenn die bärische zusammengesetzte Kerze gebildet ist, wird die lange Position geschlossen.

//+------------------------------------------------------------------+
//| Prüft die Bedingungen zum Schließen einer langen Position |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseLong(double& price)
  {
   //--- prüft das Vorhandensein der bärischen zusammengesetzten Kerze
   if(Candle(1)>=0) return(false);
   //---
   price=0.0;
   //--- die Bedingungen sind erfüllt, return true
   return(true);
  }


3. Kurze Position öffnen

Um eine kurze Position zu eröffnen, muss die bärische zusammengesetzte Kerze gebildet sein. Wenn die zusammengesetzte Kerze nicht gebildet wurde oder nicht bärisch ist, wird zurückgegeben. Andernfalls bestimmen wir ihre Größe und berechnen die Preisniveaus für den ausstehenden Auftrag

(der Auftragstyp hängt vom Vorzeichen des Eingabeparameters Limit ab, siehe "Lange Position öffnen").

//+------------------------------------------------------------------+
//| Prüft die Bedingungen zum Öffnen einer kurzen Position (Verkauf) |//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   //--- prüft das Vorhandensein der bärischen zusammengesetzten Kerze
   if(Candle(1)>=0) return(false);
   //--- Größe der zusammengesetzten Kerze ermitteln
   double size=m_high_composite-m_low_composite;
   //--- Preis des ausstehenden Auftrags berechnen
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
   //--- Stop Loss Preis berechnen
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
   //--- Take Profit Preis berechnen
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
   //--- Ablaufzeit der Order festlegen
   expiration+=m_expiration*PeriodSeconds(m_period);
   //--- die Bedingungen sind erfüllt, return true
   return(true);
  }


4. Kurze Position schließen

Wenn die bullische zusammengesetzte Kerze gebildet ist, wird die kurze Position geschlossen.

//+------------------------------------------------------------------+
//| Prüft die Bedingungen zum Schließen einer kurzen Position |//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseShort(double& price)
  {
   //--- prüft das Vorhandensein der bullischen zusammengesetzten Kerze
   if(Candle(1)<=0) return(false);
   //---
   price=0.0;
   //--- die Bedingungen sind erfüllt, return true
   return(true);
  }

Erstellung eines Expert Advisors mit MQL5 Wizard

Um einen Handelsroboter basierend auf der Strategie zu erstellen, müssen Sie die Signalparameter als „Signale basierend auf Umkehrkerzenmustern“ in der Option „Bereitgestellte Expert Advisors erstellen“ des MQL5 Wizard auswählen:

Abbildung 2. Wählen Sie „Signale basierend auf Umkehrkerzenmustern“ im MQL5 Wizard

Abbildung 2. Wählen Sie „Signale basierend auf Umkehrkerzenmustern“ im MQL5 Wizard

Als Nächstes müssen Sie den benötigten Trailing Stop-Algorithmus und das Geld- und Risikomanagement-System angeben. Der Code des Expert Advisors wird automatisch erstellt, den können Sie dann kompilieren und im Strategietester des MetaTrader 5 Client-Terminals testen.


Testergebnisse

Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD M15, Testzeitraum: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).

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

Abbildung 3. Testergebnisse des Expert Advisors mit Handelssignalen, basierend auf Umkehrkerzenmustern

Abbildung 3. Testergebnisse des Expert Advisors mit Handelssignalen, basierend auf Umkehrkerzenmustern


Anhänge: Die Datei SignalCandles.mqh mit der Klasse CSignalCandles muss in den Ordner terminal_data_folder\MQL5\Include\Expert\Signal gelegt werden.

Die Datei expert_candles.mq5 enthält den Code des Expert Advisors, der mit MQL5 Wizard erstellt wurde.


Verwandte Beiträge

Kommentar (0)