Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

MQL5 Wizard - Handelssignale basierend auf Umkehrkerzenformationen - Experte für den MetaTrader 5

Ansichten:
2069
Rating:
(45)
Veröffentlicht:
2016.09.02 10:59
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\Expert\Signal\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der Artikel Der MQL5-Assistent: Erstellen von Expert-Systemen ohne Programmierung beschreibt Schritte der automatischen Erstellung des Codes eines Expert Advisors mithilfe von MQL5 Wizard.

Die Klasse CSignalCandles ("Signals based on reversal candlestick patterns") implementiert den Algorithmus der Generierung von Handeslsignalen auf der Basis von Umkehrkerzenformationen mit vorgegebenen Parametern. Es ist empfehlenswert, neben diesen Signalen zusätzliche bestätigende Signale, z.B. von Oszillatoren, zu nutzen.

Die Idee besteht darin, den Moment der Bildung einer zusammengesetzten Umkehrkerze mit festgelegten Merkmalen (Kerzengröße in Punkten, Struktur der Schatten) zu erkennen. Die Umkehrkerzenformationen sind den japanischen Candlesticks "Hammer" und "Hanging Man" ähnlich. Der Körper der zusammengesetzten Kerze muss aber nicht unbedingt klein sein, und die resultierende Kerze wird aus mehreren Kerzen gebildet.

Eingabeparameter:

  • Range - setzt die höchste Balkenzahl, aus welchen eine zusammengesetzte Kerze gebildet wird.
  • Minimum - Mindestgröße der Kerze (in Punkten).
  • ShadowBig und ShadowSmall - Parameter der Schatten (in Einheiten der zusammengesetzten Kerze).
  • Limit, StopLoss und TakeProfit - Eröffnungslevels, SL und TP, werden hinsichtlich des Schlusspreises der zusammengesetzten Kerze festgelegt (in Einheiten der zusammengesetzten Kerze).
  • Expiration - zeigt die Lifetime einer Order (in Balken) an (wenn der Trade nicht zum Marktpreis ausgeführt werden soll (Limit!=0.0)).

Die Umkehrkerzenformationen werden folgenderweise ermittelt.

Schritt für Schritt (von der letzten vollständigen Kerze (mit dem Index 1) und bis zur durch den Range Parameter gesetzten Balkenzahl) wird eine zusammengesetzte Kerze gebildet und ihre Größe wird überprüft. Wenn die Kerze größer als die durch den Minimum Parameter gesetzte minimale Kerzengröße ist, werden dann die Bedingungen für die Umkehr überprüft, indem man die Schatten der Kerze analysiert.

Die Stärke der Bären wird durch die Größe des Dochtes (des oberen Schattens) und die Stärke der Bullen durch die Größe der Lunte (des unteren Schattens) charakterisiert.

  • Um die Umkehr des bärischen Trends (und Anfang des bullischen) zu bestätigen, muss die Lunte größer als ShadowBig sein. Der Docht (bears power) muss dabei kleiner als der Inputparameter ShadowSmall sein. In diesem Fall wird die Bedingung für die Umkehr des bullischen Trends erfüllt (die Wahrscheinlichkeit der Preiserhöhung steigt).
  • Um die Umkehr des bullischen Trends (und den Anfang des bärischen Trends) zu bestätigen, muss der obere Schatten größer als ShadowBig sein und der untere Schatten (bulls power) muss kleiner als der Inputparameter ShadowSmall sein. In diesem Fall wird die Bedingung für die Umkehr des bullischen Trends erfüllt (die Wahrscheinlichkeit der Preissenkung steigt).

Neben den Umkehrkerzenformationen kann man Ausbruch-Strategien verwenden, indem man negative Werte für den Limit Parameter festlegt (s. Anmerkung zum MQL5 Wizard - Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter).

Je nach dem Wert des Limit Parameters sind drei Varianten des Einstiegs möglich:

  1. Limit>0. Einstieg zu einem besseren Preis als der Marktpreis (die Buy Limit und Sell Limit Pending Orders werden je nach dem Handelssignal platziert)
  2. Limit<0. Einstieg in der Richtung der Kursbewegung zu einem schlechteren Preis als der Marktpreis (Buy Stop und Sell Stop Pending Orders werden je nach dem Handelssignal platziert).
  3. Limit=0. Einstieg zum aktuellen Marktpreis.

Diese Handelsstrategie wird in der Klasse CSignalCandles implementiert (die Datei SignalCandles.mqh ist nach MQL5\Include\Expert\Signal zu kopieren)

Figure 1. Trade signals, based on reversal candlestick patterns

Abbildung 1. Handelssignale basierend auf Umkehrkerzenformationen


Handelssignale

Das Modul der Handelssignalen wird in der CSignalCandles Klasse implementiert, die die Candle() Funktion für die Analyse enthält:

int  Candle(int ind); // gibt einen positiven/negativen Wert je nach dem Typ der Kerzenformation zurück
                      // ihr Zahlenwert ist gleich der Kerzenzahl (ab ind),
                      // in der zusammengesetzten Kerze.

Für die Bildung einer zusammengesetzten Kerze können mehrere Balken/Kerzen (die maximale Zahl wird durch den Parameter Range bestimmt) verwendet werden. Aber die Bedingungen für die Bildung der Kerze (ihre Größe, Struktur der Schatten) können früher erfüllt werden. Der absolute Wert, den die Candle Funktion liefert, bestimmt die Anzahl der Balken, aus welchen die zusammengesetzte Kerze gebildet wird. Wenn die Bedingungen für die Formation einer zusammengesetzten Kerze nicht erfüllt sind, wird Null geliefert.

Besonders hervorzuheben ist, dass die Struktur der Schatten entscheidet, ob die zusammengesetzte Kerze "bullisch" oder "bärisch" ist:

  • "bullische" Kerzenformationen haben meistens eine größere Lunte (unterer Schatten);
  • "bärische" Kerzenformationen haben einen größeren Docht (oberer Schatten);
Vergleichbar sind die Umkehrkehrzenformationen Hammer und Hanging Man.


1. Eröffnen einer Long-Position

Für das Eröffnen einer Long-Position wird eine bullische Kerze benötigt. Wenn die Kerze "bärisch" ist, Funktion verlassen. Wenn die Kerze bullisch ist wird ihre Größe ermittelt und die Parameter der zu platzierenden Buy Pending Order werden berechnet.

Bitte beachten Sie, dass der Typ der Pending Order (Buy Limit oder Buy Stop) von dem Wert des Inputparameters Limit abhängt (wenn Limit=0 oder |price-ask|<stops level, dann wird eine Buy Order, wenn Limit>0, eine Buy Limit Pending Order und wenn Limit<0 eine Buy Stop Pending Order platziert).

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Long-Position   |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- den Typ der zusammegesetzten Kerze überprüfen, wenn sie nicht vollständig ist oder nicht bullisch ist, beenden 
   if(Candle(1)<=0) return(false);
//--- die Größe der Kerze berechnen,
//--- denn die Levels werden in der Größeneinheit der zusammengesetzten Kerze gesetzt
   double size=m_high_composite-m_low_composite;
//--- Preis der Buy Pending Order berechnen
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
//--- Stop Loss Level berechnen
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
//--- Take Profit Level berechnen
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
//--- Ablaufzeit der Pending Order berechnen
   expiration+=m_expiration*PeriodSeconds(m_period);
//---  die Bedingungen für das Eröffnen einer Long-Position sind erfüllt, true zurückgeben
   return(true);
  }


2. Schließen einer Long-Position

Das Signal zum Schließen einer Long-Position entsteht, wenn eine bärische Kerze gebildet wird.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Long-Position  |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseLong(double& price)
  {
//--- prüfen, ob eine bärische Kerze gebildet wurde,
   if(Candle(1)>=0) return(false);
//---
   price=0.0;
//--- wenn die Bedingungen für das Schließen einer Long-Position erfüllt sind, true zurückgeben
   return(true);
  }


3. Eröffnen einer Short-Position

Für das Eröffnen einer Short-Position wird eine bärische Kerze benötigt. Wenn keine zusammengesetzte Kerze gebildet wurde oder wenn die Kerze bullisch ist, die Funktion verlassen. Wenn die Kerze bärisch ist wird ihre Größe ermittelt und die Parameter der zu platzierenden Sell Pending Order werden berechnet (der Typ der zu platzierenden Order hängt vom Inputparameter Limit ab, s. "Eröffnen einer Long-Position").

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Short-Position  |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- den Typ der zusammengesetzten Kerze überprüfen, wenn sie nicht gebildet oder nicht bärisch ist, beenden 
   if(Candle(1)>=0) return(false);
//--- die Größe der Kerze berechnen,
//--- denn die Levels werden in der Größeneinheit der zusammengesetzten Kerze gesetzt
   double size=m_high_composite-m_low_composite;
//--- Sell Pending Order berechnen
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
//--- Stop Loss Level berechnen
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
//--- Take Profit Level berechnen
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
//--- Ablaufzeit der Pending Order berechnen
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- die Bedingungen für das Eröffnen einer Short-Position sind erfüllt, true zurückgeben
   return(true);
  }

4. Schließen einer Short-Position

Das Signal zum Schließen einer Short-Position entsteht, wenn eine bullische Kerze gebildet wird.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Short-Position |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseShort(double& price)
  {
//--- prüfen, ob eine bullische Kerze gebildet wurde
  if(Candle(1)<=0) return(false);
//---
   price=0.0;
//--- die Bedingungen für das Schließen einer Short-Position sind erfüllt, true zurückgeben
   return(true);
  }

Erstellung eines Expert Advisors mithilfe von MQL5 Wizard

Für die Erstellung eines Handelsroboters nach dieser Strategie mithilfe von MQL5 Wizardwählen Sie "Signals based on reversal candlestick patterns" im zweiten Schritt aus:

Abbildung 2. Auswahl eines Moduls in MQL5 Wizard

Abbildung 2. Auswahl eines Moduls von Handelssignalen in MQL5 Wizard

Geben Sie den gewünschten Typ von Trailing Stop und Kapitalmanagement in den nächsten Schritten an. Der Code des Expert Advisors wird automatisch generiert, er muss kompiliert werden und dann können Sie mit dem Testen anfangen.


Testergebnisse

Die Ergebnisse des EAs bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Zeitraum: 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).

Dieser Expert Advisor benutzt das Modul für den Handel mit einer festgelegten Lotgröße von 0.1 Lot (Trading Fixed Lot), ein Trailing Stop wurde nicht verwendet (Trailing not used).

Abbildung 3. Testergebnisse des EAs, der Handelssignale auf der Basis von Umkehrkerzenformationen generiert

Abbildung 3. Testergebnisse des EAs, der Handelssignale auf der Basis von Umkehrkerzenformationen generiert


Die Datei SignalCandles.mqh, die die Klasse CSignalCandles enthält, muss in client_terminal_data\MQL5\Include\Expert\Signal gespeichert werden.

Der von dem MQL5 Wizard generierte Code für den Expert Advisor ist angefügt als Datei: expert_candles.mq5.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/268

MQL5 Wizard - Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators MQL5 Wizard - Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators

Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators.

MQL5 Wizard- Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter MQL5 Wizard- Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter

Handelssignale auf der Basis der Kreuzung zweier EMA mit einem Filter nach zeitlichen Parametern "Signals based on crossover of two EMA with intraday time filter".

Multicurrency Event-Handler OnTick(string symbol) Multicurrency Event-Handler OnTick(string symbol)

Eine vereinfachte Implementierung des Multicurrency-Modus in MetaTrader 5. Es ist nicht nötig, sich damit auseinanderzusetzen, wie das funktioniert. Minimum an Einstellungen. Maximum an Benutzerfreundlichkeit. Funktioniert im Tester.

eKeyboardTrader eKeyboardTrader

Ein Expert Advisor für die Ausführung von Transaktionen über die Tastatur.