und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5

MQL5 Wizard - Handelssignale basierend auf Umkehrkerzenformationen - Experte für den MetaTrader 5
- Ansichten:
- 2261
- Rating:
- Veröffentlicht:
- 2016.09.02 10:59
- Aktualisiert:
- 2016.11.22 07:34
-
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:
- Limit>0. Einstieg zu einem besseren Preis als der Marktpreis (die Buy Limit und Sell Limit Pending Orders werden je nach dem Handelssignal platziert)
- 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).
- 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)
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);
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 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
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

Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators.

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

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.

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