Systemhandel

MQL5 Wizard: Handelssignale mit Hammer/Hängendem Mann und Stochastic für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelssignale mit Hammer/Hängendem Mann und Stochastic für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) auf Basis der Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden (detaillierte Informationen findest du in MQL5 Wizard: Fertige Expert Advisors erstellen). Damit kannst du deine Handelsideen schnell überprüfen, indem du eine eigene Klasse für Handelssignale erstellst. Die Struktur dieser Klasse sowie ein Beispiel findest du im Artikel MQL5 Wizard: Modul von Handelssignalen erstellen. Die allgemeine Idee ist wie folgt: Die Klasse der Handelssignale wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. Es gibt ein Buch namens "Strategien der besten Trader" (in Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Die beste Vorgehensweise ist, 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, reicht es aus, die Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die erforderlichen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Hammer/Hängender Mann" basieren, bestätigt durch den Stochastic-Indikator. Das Modul der Handelssignale basiert auf der Klasse CCandlePattern, die ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern ist. 1. Umkehrkerzenmuster "Hammer" und "Hängender Mann" 1.1. Hammer Der "Hammer" ist eine Kerze mit kleinem Körper und langem unteren Schatten, die nach einem Abwärtstrend gebildet wird. Das "Hammer"-Muster signalisiert das Ende eines Bärenmarktes. Die Farbe des Kerzenkörpers ist nicht entscheidend, aber ein bullischer Hammer zeigt ein höheres bullisches Potenzial an. Der Körper des "Hammer"-Musters wird oft in der Nähe des Minimums der vorherigen Kerze gebildet. Ein längerer unterer Schatten und ein kürzerer oberer Schatten führen zu einem höheren Potenzial für das Umkehrmuster. Abbildung 1. "Hammer" Kerzenmuster Die Erkennung des "Hammer"-Musters wird in der Methode CheckPatternHammer() der CCandlePattern-Klasse implementiert: //+------------------------------------------------------------------+ //| Ü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örperlücke       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 kleinem Körper und langem unteren Schatten, die nach einem Aufwärtstrend gebildet wird. Das "Hängende Mann"-Muster signalisiert das Ende eines Bullenmarktes. Die Farbe des Kerzenkörpers ist nicht entscheidend, aber eine bärische Kerze weist auf ein höheres bärisches Potenzial hin. Der Körper des "Hängenden Mannes" wird oft in der Nähe des Maximums der vorherigen Kerze gebildet. Ein längerer unterer Schatten und ein kürzerer oberer Schatten führen zu einem höheren Potenzial für das Umkehrmuster. Abbildung 2. "Hängender Mann" Kerzenmuster Die Erkennung des "Hängenden Mann"-Musters wird in der Methode CheckPatternHangingMan() der CCandlePattern-Klasse implementiert: //+------------------------------------------------------------------+ //| Ü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örperlücke       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 Stochastic-Indikator Die Handelssignale zum Eröffnen einer Long- oder Short-Position müssen durch den Stochastic-Oszillator bestätigt werden. Die %D-Linie muss einen entsprechenden kritischen Wert (30 oder 70) überschreiten/unterschreiten. Der Abschluss einer offenen Position hängt von den Werten des %D-Indikators ab. Dies kann in zwei Fällen erfolgen: Wenn die %D-Linie das gegenüberliegende kritische Niveau (80 für Long-Position und 20 für Short-Position) erreicht hat. Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie die folgenden Level erreicht: 20 für Long-Position und 80 für Short-Position). Abbildung 3. "Hammer" Muster, bestätigt durch den Stochastic-Indikator int CH_HM_Stoch::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CH_HM_Stoch::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "Hammer"-Musters muss durch den Stochastic-Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastic-Indikators der letzten abgeschlossenen Kerze muss weniger als 30 betragen). Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastic-Indikators die 20 oder 80 Niveaus nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg                | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)            | //| 2) Marktausgang (Short-Position schließen, Ergebnis=40)          | //+------------------------------------------------------------------+ int CH_HM_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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Hammer-Musters und Signallinie<30   if (CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (StochSignal(1)<30))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signallinienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Hängenden Mann"-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). Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastic-Indikators die 80 oder 20 Niveaus nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg                | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)            | //| 2) Marktausgang (Long-Position schließen, Ergebnis=40)          | //+------------------------------------------------------------------+ int CH_HM_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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Hängenden Mannes-Musters und Signallinie>70   if (CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (StochSignal(1)>70))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signallinienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die Klasse CH_HM_Stoch ist nicht in den Klassen der Standardbibliothek enthalten. Um sie verwenden zu können, ist es notwendig, die Datei ach_hm_stoch.mqh herunterzuladen (siehe Anhänge) und im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals zu speichern. Dasselbe sollte mit der Datei candlepatterns.mqh getan werden. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors festlegen: Abbildung 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module für Handelssignale auswählen. Abbildung 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf Hammer/Hängendem Mann, bestätigt durch Stochastic" für Handelssignale: Abbildung 7. Signal-Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Abbildung 8. Signal-Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet": Abbildung 9. Trailing-Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abbildung 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der Schaltfläche "Fertigstellen" erhalten wir den Code des generierten Expert Advisors, der in Expert_AH_HM_Stoch.mq5 zu finden ist und im terminal_data_folder\MQL5\Experts\ gespeichert wird. Die Standardparameter des generierten Expert Advisors: //--- Eingaben für das Hauptsignal input int            Signal_ThresholdOpen   =10;     // Signalgrenzwert, um zu öffnen [0...100] input int            Signal_ThresholdClose  =10     // Signalgrenzwert, um zu schließen [0...100] input double         Signal_PriceLevel      =0.0    // Preisniveau, um einen Handel auszuführen 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     // Signalgrenzwert, um zu öffnen [0...100] input int            Signal_ThresholdClose  =20     // Signalgrenzwert, um zu schließen [0...100] input double         Signal_PriceLevel      =0.0    // Preisniveau, um einen Handel auszuführen 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, Grenzwerte für das Öffnen und Schließen von Positionen festzulegen. 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 durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine LongCondition()- und ShortCondition()-Methoden geben immer 0 zurück. Die Abstimmungsergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul von Handelssignalen, also müssen wir diese Tatsache 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 gesetzt 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. Historische Rücktest-Ergebnisse Betrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). 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). Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Hammer/Hängendem Mann + Stochastic Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der durch den MQL5 Wizard erstellt wurde, ist im expert_ah_hm_stoch.mq5 angehängt.

2011.03.21
MQL5 Wizard: Handelsignale mit Bullish/Bearish Harami und RSI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelsignale mit Bullish/Bearish Harami und RSI für MetaTrader 5

Der MQL5 Wizard ermöglicht es, maßgeschneiderte Expert Advisors (EAs) zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung von maßgeschneiderten Expert Advisors im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen – alles, was du tun musst, ist, deine eigene Handelsignal-Klasse zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale. Die grundlegende Idee ist wie folgt: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden ü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 Oszillatoren bestätigt werden. Es ist am besten, eine separate Klasse abzuleiten, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch die Kerzenmuster erzeugt werden, zu bestätigen, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern abgeleitet ist, und die erforderlichen Funktionen (z. B. Bestätigung durch Oszillatoren) dort hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrmuster "Bullish Harami/Bearish Harami" basieren, das durch den RSI-Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "Bullish Harami" und "Bearish Harami" 1.1. Bullish Harami Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der fallende Trend (Abwärtstrend) möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, eine Long-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach oben. Je kleiner die zweite (weiße) Kerze, desto wahrscheinlicher ist die Umkehr. Abb. 1. Bullish Harami Kerzenmuster Die Erkennung des "Bullish Harami"-Musters erfolgt in der Methode CheckPatternBullishHarami() der CCandlePattern-Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Harami" Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // die letzte abgeschlossene Kerze ist bullish (weißer Tag)      ((Open(2)-Close(2)>AvgBody(1))  && // die vorherige Kerze ist bearish, ihr Körper ist größer als der Durchschnitt (lange schwarze)      ((Close(1)<Open(2))              && // Schlusskurs der bullishen Kerze liegt unter dem Eröffnungskurs der bearishen Kerze       (Open(1)>Close(2)))              && // Eröffnungskurs der bullishen Kerze liegt über dem Schlusskurs der bearishen Kerze       (MidPoint(2)<CloseAvg(2)))         // Abwärtstrend       return(true); //---    return(false);   }Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)-Methode der CCandlePattern-Klasse wird verwendet, um die Bildung des "Bullish Harami"-Kerzenmusters zu überprüfen. 1.2. Bearish Harami Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der steigende Trend (Aufwärtstrend) möglicherweise umkehrt, und signalisiert, dass es ein guter Zeitpunkt ist, eine Short-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach unten. Je kleiner die zweite (schwarze) Kerze, desto wahrscheinlicher ist die Umkehr. Abb. 2. Bearish Harami Kerzenmuster Die Erkennung des "Bearish Harami"-Musters erfolgt in der Methode CheckPatternBearishHarami() der CCandlePattern-Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Harami" Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // letzte abgeschlossene Kerze ist bearish (schwarzer Tag)      ((Close(2)-Open(2)>AvgBody(1))  && // die vorherige Kerze ist bullish, ihr Körper ist größer als der Durchschnitt (lange weiße)      ((Close(1)>Open(2))              && // Schlusskurs der bearishen Kerze liegt über dem Eröffnungskurs der bullishen Kerze       (Open(1)<Close(2)))              && // Eröffnungskurs der bearishen Kerze liegt unter dem Schlusskurs der bullishen Kerze       (MidPoint(2)>CloseAvg(2)))         // Aufwärtstrend       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)-Methode der CCandlePattern-Klasse wird verwendet, um die Bildung des "Bearish Harami"-Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den RSI-Indikator Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den RSI-Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Levels (40 für Long-Position und 60 für Short-Position) liegen. Der Schluss einer geöffneten Position hängt von den Werten des RSI ab. Dies kann in 2 Fällen erfolgen: Wenn der RSI das gegenüberliegende kritische Level erreicht hat (70 für Long-Position und 30 für Short-Position). Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI die folgenden Levels erreicht: 30 für Long-Position und 70 für Short-Position). Abb. 3. Bullish Harami Muster, bestätigt durch den RSI-Indikator int CBH_BH_RSI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CBH_BH_RSI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position öffnen/Short-Position schließen Die Bildung des "Bullish Harami"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 sein). Die Short-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Levels 70 oder 30 nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg                 | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80)                  | //| 2) Marktausgang (Short-Position schließen, Ergebnis=40)                 | //+------------------------------------------------------------------+ int CBH_BH_RSI::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 News-Bars    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Bullish Harami-Musters und RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (RSI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linien-Crossover der überkauften/verkauften Levels (nach oben 30, nach oben 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position öffnen/Long-Position schließen Die Bildung des "Bearish Harami"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Levels 70 oder 30 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg                 | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80)                 | //| 2) Marktausgang (Long-Position schließen, Ergebnis=40)                  | //+------------------------------------------------------------------+ int CBH_BH_RSI::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 News-Bars    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Bearish Harami-Musters und RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (RSI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linien-Crossover der überkauften/verkauften Levels (nach unten 70, nach unten 30)    if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit dem MQL5 Wizard Die CBH_BH_RSI-Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, ist es notwendig, die Datei acml_rsi.mqh herunterzuladen (siehe Anhänge) und sie im client_terminal_data\Ordner\MQL5\Include\Expert\Signal\MySignals zu speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abb. 4. Erstellung eines Expert Advisors mit dem MQL5 Wizard Lass uns den Namen des Expert Advisors angeben: 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 In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch RSI"-Moduls der Handelssignale: Abb. 7. Signal-Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: 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 Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_RSI.mq5 gespeichert wird, in terminal_data_folder\MQL5\Experts\. 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 Geschäfts 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 Geschäfts 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 anzugeben. Im Code der LongCondition() und ShortCondition()-Methoden der Handelssignalklasse haben wir die festen Werte der Schwellenwerte angegeben: Position öffnen: 80; Position schließen: 40. Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mit den "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine LongCondition() und ShortCondition() Methoden geben immer 0 zurück. Die Stimmresultate des Hauptmoduls werden auch in der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diesen Fakt 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 Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen wahr sind. 2.4. Ergebnisse der historischen Backtests Betrachten wir die Backtests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010 - 11.03.2011, PeriodRSI=37, MA_period=7). 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). Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + RSI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5-Clientterminals gefunden werden. Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist in expert_aml_rsi.mq5 angehängt.

2011.03.17
Handelsstrategie mit MQL5 Wizard: Bullish und Bearish Harami Signale mit MFI
MetaTrader5
Handelsstrategie mit MQL5 Wizard: Bullish und Bearish Harami Signale mit MFI

Der MQL5 Wizard ermöglicht die Erstellung von fertigen Expert Advisors (EAs), die auf den Klassen der Standardbibliothek basieren, die mit dem Client-Terminal geliefert werden (siehe auch Erstellung von fertigen Expert Advisors im MQL5 Wizard für Details). Somit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handelsklassensignale erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Modul für Handelssignale. Die grundlegende Idee ist wie folgt: Die Handelsklassensignale leiten sich von CExpertSignal ab. Anschließend musst du die LongCondition() und ShortCondition() virtuellen Methoden mit deinen eigenen Methoden überschreiben. Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (in Russisch), das viele Handelsstrategien behandelt. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten ist es, 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, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern abgeleitet ist, und die notwendigen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "Bullish Harami" und "Bearish Harami" 1.1. Bullish Harami Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster deutet darauf hin, dass der fallende Trend (Abwärtstrend) sich umkehren könnte und signalisiert, dass es ein guter Zeitpunkt ist, in eine Long-Position einzutreten. Die zweite Kerze eröffnet mit einer Kurslücke nach oben. Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abbildung 1. Bullish Harami Kerzenmuster Die Erkennung des "Bullish Harami" Musters erfolgt über die Methode CheckPatternBullishHarami() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des Bullish Harami Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // die letzte abgeschlossene Kerze ist bullish (weißer Tag)      ((Open(2)-Close(2)>AvgBody(1))  && // die vorherige Kerze ist bearish, ihr Körper ist größer als der Durchschnitt (lange schwarze Kerze)      ((Close(1)<Open(2))              && // Schlusskurs der bullishen Kerze liegt unter dem Eröffnungskurs der bearishen Kerze       (Open(1)>Close(2)))             && // Eröffnungskurs der bullishen Kerze liegt über dem Schlusskurs der bearishen Kerze       (MidPoint(2)<CloseAvg(2)))         // Abwärtstrend       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Harami" Kerzenmusters zu überprüfen. 1.2. Bearish Harami Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster deutet darauf hin, dass der steigende Trend (Aufwärtstrend) sich umkehren könnte und signalisiert, dass es ein guter Zeitpunkt ist, in eine Short-Position einzutreten. Die zweite Kerze eröffnet mit einer Kurslücke nach unten. Je kleiner die zweite (schwarze) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abbildung 2. Bearish Harami Kerzenmuster Die Erkennung des "Bearish Harami" Musters erfolgt über die Methode CheckPatternBearishHarami() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des Bearish Harami Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // letzte abgeschlossene Kerze ist bearish (schwarzer Tag)      ((Close(2)-Open(2)>AvgBody(1))  && // die vorherige Kerze ist bullish, ihr Körper ist größer als der Durchschnitt (lange weiße Kerze)      ((Close(1)>Open(2))              && // Schlusskurs der bearishen Kerze liegt über dem Eröffnungskurs der bullishen Kerze       (Open(1)<Close(2)))             && // Eröffnungskurs der bearishen Kerze liegt unter dem Schlusskurs der bullishen Kerze       (MidPoint(2)>CloseAvg(2)))         // Aufwärtstrend       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Harami" Kerzenmusters zu überprüfen. 2. Handelssignale, die durch den MFI Indikator bestätigt werden Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den MFI Indikator bestätigt werden. Der Wert des MFI Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen. Der Abschluss einer offenen Position hängt von den Werten des MFI Indikators ab. Er kann in 2 Fällen erfolgen: Wenn der MFI das entgegengesetzte kritische Niveau erreicht hat (70 für Long-Position und 30 für Short-Position). Wenn das umgekehrte Signal nicht bestätigt ist (wenn der MFI Indikator die folgenden Niveaus erreicht: 30 für Long-Position und 70 für Short-Position). Abbildung 3. Bullish Harami Muster, bestätigt durch MFI int CBH_BH_MFI::LongCondition() - überprüft die Bedingungen für das Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CBH_BH_MFI::ShortCondition() - überprüft die Bedingungen für das Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "Bullish Harami" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)<40 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss unter 40 liegen). Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben ü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 CBH_BH_MFI::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 bei News-Bars    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Bullish Harami Musters und MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Bearish Harami" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss über 60 liegen). Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben ü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 CBH_BH_MFI::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 bei News-Bars    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Bearish Harami Musters und MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 70, nach unten 30)    if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung des Expert Advisors mit MQL5 Wizard Die CBH_BH_MFI Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei abh_bh_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche solltest du mit der Datei acandlepatterns.mqh tun. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4. Expert Advisor erstellen mit MQL5 Wizard Lass uns den Namen des Expert Advisors angeben: Abbildung 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module der Handelssignale auswählen. Abbildung 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul der Handelssignale. Wir fügen das Modul "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch MFI" hinzu: Abbildung 7. Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Abbildung 8. Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet": Abbildung 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abbildung 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_MFI.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts\ befindet. Die Standard-Eingabeparameter des generierten Expert Advisors: //--- Eingaben für 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) muss ersetzt werden durch: //--- Eingaben für 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 Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir feste Schwellenwerte angegeben: Position öffnen: 80; Position schließen: 40. Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen anhand der "Stimmen" der Module der Handelssignale. Die Stimme des Hauptmoduls (als Container, es besteht aus allen hinzugefügten Modulen) wird ebenfalls verwendet, aber die Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Ergebnisstimmen des Hauptmoduls werden auch in der Durchschnittsbildung der "Stimmen" verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, daher müssen wir bei der Festlegung der Schwellenwerte diesen Fakt berücksichtigen. Aus diesem Grund müssen die Werte für 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 erfolgt, wenn die Schließbedingungen wahr sind. 2.4. Ergebnisse der historischen Rücktests Schauen wir uns den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodMFI=37, MA_period=11) 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). Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Bullish Harami/Bearish Harami + MFI Das beste Set von Eingabeparametern kann mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist in expert_abh_bh_mfi.mq5 angehängt.

2011.03.17
Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen
MetaTrader5
Handelssignale mit MQL5 Wizard: Bullish und Bearish Harami mit CCI bestätigen

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung fertiger Expert Advisors im MQL5 Wizard für Details). Du kannst deine Handelsideen schnell überprüfen, alles was du tun musst, ist deine eigene Handelsklassensignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Wie man ein Modul für Handelssignale erstellt. Die Grundidee ist wie folgt: Die Klasse der Handelssignale leitet sich von CExpertSignal ab. Dann ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden zu überschreiben. Es gibt ein Buch "Strategien der besten Händler" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um das Auftreten von Kerzenmustern zu überprüfen. Um die durch Kerzenmuster generierten Handelssignale zu bestätigen, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den CCI-Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der Klasse CCandlePattern, es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster "Bullish Harami" und "Bearish Harami" 1.1. Bullish Harami Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster zeigt an, dass sich der fallende Trend (Abwärtstrend) umkehren könnte, und signalisiert, dass es ein guter Zeitpunkt ist, eine Long-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach oben. Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abb. 1. "Bullish Harami" Kerzenmuster Die Erkennung des "Bullish Harami" Musters ist in der Methode CheckPatternBullishHarami() der Klasse CCandlePattern implementiert: //+------------------------------------------------------------------+ //| Überprüft das Auftreten des "Bullish Harami" Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // die letzte abgeschlossene Kerze ist bullisch (weißer Tag)      ((Open(2)-Close(2)>AvgBody(1))  && // die vorherige Kerze ist bärisch, ihr Körper ist größer als der Durchschnitt (lange schwarze)      ((Close(1)<Open(2))              && // Schlusskurs der bullischen Kerze liegt unter dem Eröffnungskurs der bärischen Kerze       (Open(1)>Close(2)))             && // Eröffnungskurs der bullischen Kerze liegt über dem Schlusskurs der bärischen Kerze       (MidPoint(2)<CloseAvg(2)))         // Abwärtstrend       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) Methode der Klasse CCandlePattern wird verwendet, um das Auftreten des "Bullish Harami" Kerzenmusters zu überprüfen. 1.2. Bearish Harami Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper sich innerhalb des vertikalen Bereichs des größeren Körpers befindet. Dieses Muster zeigt an, dass sich der steigende Trend (Aufwärtstrend) umkehren könnte, und signalisiert, dass es ein guter Zeitpunkt ist, eine Short-Position einzugehen. Die zweite Kerze öffnet mit einer Lücke nach unten. Je kleiner die zweite (schwarze) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abb. 2. "Bearish Harami" Kerzenmuster Die Erkennung des "Bearish Harami" Musters ist in der Methode CheckPatternBearishHarami() der Klasse CCandlePattern implementiert: //+------------------------------------------------------------------+ //| Überprüft das Auftreten des "Bearish Harami" Kerzenmusters         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // letzte abgeschlossene Kerze ist bärisch (schwarzer Tag)      ((Close(2)-Open(2)>AvgBody(1))  && // die vorherige Kerze ist bullisch, ihr Körper ist größer als der Durchschnitt (lange weiße)      ((Close(1)>Open(2))              && // Schlusskurs der bärischen Kerze liegt über dem Eröffnungskurs der bullischen Kerze       (Open(1)<Close(2)))             && // Eröffnungskurs der bärischen Kerze liegt unter dem Schlusskurs der bullischen Kerze       (MidPoint(2)>CloseAvg(2)))         // Aufwärtstrend       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) Methode der Klasse CCandlePattern wird verwendet, um das Auftreten des "Bearish Harami" Kerzenmusters zu überprüfen. 2. Handelssignale, die durch den CCI-Indikator bestätigt werden Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den CCI-Indikator bestätigt werden. Der Wert des CCI muss größer/kleiner als die kritischen Werte (-50 für Long-Position und 50 für Short-Position) sein. Das Schließen einer eröffneten Position hängt von den Werten des CCI ab. Dies kann in zwei Fällen erfolgen: Wenn die CCI-Linie das gegenüberliegende kritische Niveau (80 für Long-Position und -80 für Short-Position) erreicht hat. Wenn das Umkehrsignal nicht bestätigt wird (wenn CCI die folgenden Niveaus erreicht: -80 für Long-Position und 80 für Short-Position). Abb. 3. "Bullish Harami" Muster, bestätigt durch CCI-Indikator int CBH_BH_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 CBH_BH_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 Die Bildung des "Bullish Harami" 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). Die Short-Position muss geschlossen werden, wenn der CCI-Indikator das kritische Niveau -80 nach oben überschreitet 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 CBH_BH_CCI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zur Eröffnung einer Long-Position //--- Bildung des Bullish Harami Musters und CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (abwärts -80, abwärts -80)    if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Bearish Harami" 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). Die Long-Position muss geschlossen werden, wenn der CCI-Indikator das kritische Niveau -80 oder 80 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 CBH_BH_CCI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zur Eröffnung einer Short-Position //--- Bildung des Bearish Harami Musters und CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (abwärts -80, abwärts 80)    if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die Klasse CBH_BH_CCI ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei acbh_bh_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die Datei candlepatterns.mqh. 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 eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors festlegen: Abb. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module der Handelssignale auswählen. Abb. 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch CCI" für die Handelssignale: Abb. 7. Signal-Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: 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 Was die Geldmanagement-Eigenschaften anbelangt, verwenden wir "Handel mit festem Handelsvolumen": Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_CCI.mq5 gespeichert wird, in terminal_data_folder\MQL5\Experts\. 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 Durchfü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 Durchfü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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen die Angabe von Schwellenwerten zum Öffnen und Schließen von Positionen. Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte angegeben: Long-Position eröffnen: 80; Short-Position schließen: 40. Der durch den MQL5 Wizard generierte Expert Advisor erö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 seine Methoden LongCondition() und ShortCondition() 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 dieses Umstands 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 erfolgt, wenn die Schließbedingungen wahr sind. 2.4. Ergebnisse der Backtesting-Historie Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5). 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 Harami/Bearish Harami + CCI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_abh_bh_cci.mq5 angehängt.

2011.03.17
MQL5 Wizard: Handelsstrategien mit Bullish und Bearish Harami sowie Stochastic
MetaTrader5
MQL5 Wizard: Handelsstrategien mit Bullish und Bearish Harami sowie Stochastic

Der MQL5 Wizard ermöglicht es, sofort einsatzbereite Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheksklassen basieren, die zusammen mit dem Client-Terminal geliefert werden (weitere Informationen findest du im Artikel MQL5 Wizard: Erstellung von Expert Advisors). Damit kannst du deine Handelsideen schnell prüfen – du musst lediglich deine eigene Klassen für Handelssignale erstellen. Die Struktur dieser Klasse sowie ein Beispiel findest du im Artikel MQL5 Wizard: Erstellung eines Moduls für Handelssignale. Das grundlegende Konzept ist folgendes: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Anschließend müssen die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschrieben werden. Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir werden uns auf Umkehrkerzenmuster konzentrieren, 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 Handelssignale, die durch die Kerzenmuster generiert werden, reicht es aus, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die erforderlichen Funktionen (zum Beispiel die Bestätigung durch Indikatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Harami/Bearish Harami" basieren, das durch den Stochastic Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse, die ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern darstellt. 1. Umkehrkerzenmuster: "Bullish Harami" und "Bearish Harami" 1.1. Bullish Harami Das Bullish Harami Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der fallende Trend möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, in eine Long-Position einzutreten. Die zweite Kerze öffnet mit einer Kurslücke nach oben. Je kleiner die zweite (weiße) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abbildung 1. "Bullish Harami" Kerzenmuster Die Erkennung des "Bullish Harami" Musters erfolgt über die Methode CheckPatternBullishHarami() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Harami" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))     // die letzte abgeschlossene Kerze ist bullish (weißer Tag)      ((Open(2)-Close(2)>AvgBody(1))  && // die vorherige Kerze ist bearish, ihr Körper ist größer als der Durchschnitt (lange schwarze)      ((Close(1)<Open(2))             // Schlusskurs der bullischen Kerze liegt unter dem Eröffnungskurs der bearishen Kerze       (Open(1)>Close(2)))           // Eröffnungskurs der bullischen Kerze liegt über dem Schlusskurs der bearishen Kerze       (MidPoint(2)<CloseAvg(2)))         // Abwärtstrend       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Harami" Kerzenmusters zu überprüfen. 1.2. Bearish Harami Das Bearish Harami Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine große Kerze von einer kleineren Kerze gefolgt wird, deren Körper innerhalb des vertikalen Bereichs des größeren Körpers liegt. Dieses Muster zeigt an, dass der steigende Trend möglicherweise umkehrt und signalisiert, dass es ein guter Zeitpunkt ist, in eine Short-Position einzutreten. Die zweite Kerze öffnet mit einer Kurslücke nach unten. Je kleiner die zweite (schwarze) Kerze ist, desto wahrscheinlicher ist die Umkehr. Abbildung 2. "Bearish Harami" Kerzenmuster Die Erkennung des "Bearish Harami" Musters erfolgt über die Methode CheckPatternBearishHarami() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Harami" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))     // letzte abgeschlossene Kerze ist bearish (schwarzer Tag)      ((Close(2)-Open(2)>AvgBody(1))  && // die vorherige Kerze ist bullish, ihr Körper ist größer als der Durchschnitt (lange weiße)      ((Close(1)>Open(2))              && // Schlusskurs der bearishen Kerze liegt über dem Eröffnungskurs der bullischen Kerze      (Open(1)<Close(2)))             // Eröffnungskurs der bearishen Kerze liegt unter dem Schlusskurs der bullischen Kerze       (MidPoint(2)>CloseAvg(2)))         // Aufwärtstrend       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Harami" Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den Stochastic-Indikator Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den Stochastic Indikator bestätigt werden. Die %D Linie muss über/unter dem entsprechenden kritischen Niveau (30 oder 70) liegen. Das Schließen der offenen Position hängt von den Werten des %D Indikators ab. Es kann in 2 Fällen erfolgen: Wenn die %D Linie das entgegengesetzte kritische Niveau erreicht hat (80 für Long-Position und 20 für Short-Position) Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D Linie folgende Niveaus erreicht: 20 für Long-Position und 80 für Short-Position) Abbildung 3. "Bearish Harami" Kerzenmuster, bestätigt durch den Stochastic Indikator Die Überprüfung der Handelsbedingungen für den Einstieg und Ausstieg wird in zwei Methoden implementiert: int CBH_BH_Stoch::LongCondition() - überprüft die Bedingungen für das Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CBH_BH_Stoch::ShortCondition() - überprüft die Bedingungen für das Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "Bullish Harami" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss unter 30 liegen). Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 20 oder 80 Niveaus nach oben durchquert. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktausstieg (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBH_BH_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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für das Öffnen einer Long-Position //--- Bildung des Bullish Harami Musters und Signallinie<30   if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signallinienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Bearish Harami" Musters muss durch den Stochastic Indikator bestätigt werden: StochSignal(1)>70 (der Wert der Signallinie des Stochastic Indikators der letzten abgeschlossenen Kerze muss über 70 liegen). Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 80 oder 20 Niveaus nach unten durchquert. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktausstieg (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBH_BH_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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für das Öffnen einer Short-Position //--- Bildung des Bearish Harami Musters und Signallinie>70   if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signallinienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die Klasse CBH_BH_Stoch ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbh_bh_stoch.mqh herunterladen (siehe Anhang) und sie im Client_terminal_data older\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe solltest du mit der Datei candlepatterns.mqh tun. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors festlegen: Abbildung 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die Module der verwendeten Handelssignale auswählen. Abbildung 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul von Handelssignalen. Hinzufügen des Moduls: Signale basierend auf Bullish Harami/Bearish Harami, bestätigt durch Stochastic: Abbildung 7. Signal-Eigenschaften des Expert Advisors Modul für Handelssignale hinzugefügt: Abbildung 8. Signal-Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet": Abbildung 9. Trailing-Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abbildung 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABH_BH_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;     // Schwellenwert für das Öffnen des Signals [0...100] input int            Signal_ThresholdClose  =10;     // Schwellenwert für das Schließen des Signals [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;     // Schwellenwert für das Öffnen des Signals [0...100] input int            Signal_ThresholdClose  =20;     // Schwellenwert für das Schließen des Signals [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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen. Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir feste Schwellenwerte angegeben: Position eröffnen: 80; Position schließen: 40. Der durch den MQL5 Wizard generierte Expert Advisor eröffnet und schließt Positionen mithilfe der "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Stimmresultate des Hauptmoduls werden auch zur "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul von Handelssignalen, daher müssen wir bei der Festlegung der Schwellenwerte diesen Umstand berücksichtigen. Aus diesem Grund müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt werden. Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen erfüllt sind. 2.4. Historische Backtesting-Ergebnisse Betrachten wir das Backtesting des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). Bei der Erstellung des Expert Advisors haben wir ein festes Volumen verwendet (Handel mit festem Lot, 0.1). Der Trailing Stop-Algorithmus wird nicht verwendet (Kein Trailing verwendet). Abbildung 11. Testergebnisse des Expert Advisors, basierend auf "Bullish/Bearish Harami + Stochastic" Die besten Eingabeparameter können mit dem Strategy Tester des MetaTrader 5 Client-Terminals gefunden werden.Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_abh_bh_stoch.mq5 angehängt.

2011.03.16
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und RSI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und RSI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, maßgeschneiderte Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheks-Klassen basieren, die mit dem Client-Terminal geliefert werden. Damit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handelssignalklasse erstellst. Eine detaillierte Struktur und Beispiele findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.Das Grundkonzept ist wie folgt: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Danach musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.In dem Buch "Strategien der besten Trader" (auf Russisch) werden viele Handelsstrategien behandelt, wobei wir uns auf Umkehrkerzenmuster konzentrieren, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden.Der beste Weg ist, eine separate Klasse, die von CExpertSignal abgeleitet ist, für die Überprüfung von Kerzenmusterbildungen zu erstellen. Um die Handelssignale, die durch Kerzenmuster erzeugt werden, zu bestätigen, reicht es aus, eine Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Funktionen (zum Beispiel Bestätigungen durch Oszillatoren) hinzuzufügen.Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren, das durch den RSI-Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der Klasse CCandlePattern, ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.1. "Bullish Engulfing" und "Bearish Engulfing"1.1. Bullish EngulfingDas "Bullish Engulfing" Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des vorherigen Tages vollständig "verschlingt". Die Schatten (Füße) der kleinen Kerze sind kurz, was es dem Körper der großen Kerze ermöglicht, die gesamte Kerze des vorherigen Tages zu bedecken.Abbildung 1. Bullish Engulfing KerzenmusterDie Erkennung des "Bullish Engulfing" Musters erfolgt durch die Methode CheckPatternBullishEngulfing() der CCandlePattern Klasse://+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Engulfing" Kerzenmusters      | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // vorherige Kerze ist bärisch       (Close(1)-Open(1)>AvgBody(1))  &&  // Körper der bullishen Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)>Open(2))             &&  // Schlusskurs der bullishen Kerze ist höher als der Eröffnungskurs der bärischen Kerze       (MidOpenClose(2)<CloseAvg(2))  &&  // Abwärtstrend       (Open(1)<Close(2)))                // Eröffnungspreis der bullishen Kerze ist niedriger als der Schlusskurs der bärischen       return(true); //---    return(false);   }Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Engulfing" Kerzenmusters zu überprüfen.1.2. Bearish EngulfingDas "Bearish Engulfing" Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des vorherigen Tages vollständig "verschlingt". Die Schatten (Füße) der kleinen Kerze sind kurz, was es dem Körper der großen Kerze ermöglicht, die gesamte Kerze des vorherigen Tages zu bedecken.Abbildung 2. Bearish Engulfing KerzenmusterDie Erkennung des "Bearish Engulfing" Musters erfolgt durch die Methode CheckPatternBearishEngulfing() der CCandlePattern Klasse://+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Engulfing" Kerzenmusters      | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // vorherige Kerze ist bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // Körper der Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)<Open(2))            &&  // Schlusskurs der bärischen Kerze ist niedriger als der Eröffnungskurs der bullishen Kerze       (MidOpenClose(2)>CloseAvg(2)) &&  // Aufwärtstrend       (Open(1)>Close(2)))               // Eröffnungspreis der bärischen Kerze ist höher als der Schlusskurs der bullishen Kerze       return(true); //---    return(false);   }Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Engulfing" Kerzenmusters zu überprüfen.2. Handelssignale, bestätigt durch den RSI-IndikatorDie Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den RSI-Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Niveaus liegen (40 für Long-Position und 60 für Short-Position).Der Schluss einer eröffneten Position hängt von den Werten des RSI ab. Dies kann in zwei Fällen erfolgen:Wenn der RSI das gegenüberliegende kritische Niveau (70 für Long-Position und 30 für Short-Position) erreicht hat.Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI folgende Niveaus erreicht: 30 für Long-Position und 70 für Short-Position).Abbildung 3. Bullish Engulfing Muster, bestätigt durch RSI Indikatorint CBE_BE_RSI::LongCondition() - überprüft die Bedingungen für die Eröffnung einer Long-Position (gibt 80 zurück) und das Schließen einer Short-Position (gibt 40 zurück);int CBE_BE_RSI::ShortCondition() - überprüft die Bedingungen für die Eröffnung einer Short-Position (gibt 80 zurück) und das Schließen einer Long-Position (gibt 40 zurück).2.1. Long-Position eröffnen/Short-Position schließenDie Bildung des "Bullish Engulfing" Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss unter 40 liegen).Die Short-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 nach oben ü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 CBE_BE_RSI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Long-Position //--- Bildung des Bullish Engulfing Musters und RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   }2.2. Short-Position eröffnen/Long-Position schließenDie Bildung des "Bearish Engulfing" Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI-Indikators der letzten abgeschlossenen Kerze muss über 60 liegen).Die Long-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 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 CBE_BE_RSI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Short-Position //--- Bildung des Bearish Engulfing Musters und RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach unten 70, nach unten 30)    if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   }2.3. Expert Advisor mit MQL5 Wizard erstellenDie CBE_BE_RSI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acml_rsi.mqh herunterladen (siehe Anhänge) und im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditor verwenden.Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:Abbildung 4. Expert Advisor mit MQL5 Wizard erstellenGeben wir den Namen des Expert Advisors an:Abbildung 5. Allgemeine Eigenschaften des Expert AdvisorsDanach müssen wir die verwendeten Module der Handelssignale auswählen.Abbildung 6. Signal Eigenschaften des Expert AdvisorsIn unserem Fall verwenden wir nur ein Modul von Handelssignalen.Hinzufügen des "Signals basierend auf Bullish Engulfing/Bearish Engulfing, bestätigt durch RSI" Moduls von Handelssignalen:Abbildung 7. Signal Eigenschaften des Expert AdvisorsModul der Handelssignale hinzugefügt:Abbildung 8. Signal Eigenschaften des Expert AdvisorsDu kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet":Abbildung 9. Geldmanagement Eigenschaften des Expert AdvisorsBezüglich der Geldmanagement-Eigenschaften verwenden wir "Handel mit fester Handelsgröße":Abbildung 10. Geldmanagement Eigenschaften des Expert AdvisorsDurch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_RSI.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\.Die Standard-Eingabeparameter des generierten Expert Advisors://--- Eingaben für 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 zum Ausführen 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 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 zum Ausführen 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 Eingabeparameter Signal_ThresholdOpen/Signal_ThresholdClose erlauben es, die Schwellenwerte für das Öffnen und Schließen von Positionen zu spezifizieren.Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte für die Schwellenwerte angegeben:Position öffnen: 80;Position schließen: 40.Der vom MQL5 Wizard generierte Expert Advisor ö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 Methoden LongCondition() und ShortCondition() geben immer 0 zurück.Die Ergebnisse der Stimmen des Hauptmoduls werden auch für die "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul von Handelssignalen, daher müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Faktors müssen die Schwellenwerte für die Eröffnung und Schließung auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden.Die Werte der Eingabeparameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen erfüllt sind.2.4. Historische Backtesting-ErgebnisseBetrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.04, PeriodRSI=11, MA_period=5).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).Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Bullish Engulfing/Bearish Engulfing + RSIDie besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist im expert_abe_be_rsi.mq5 angehängt.

2011.03.10
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und MFI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und MFI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, schlüsselfertige Expert Advisors (EAs) basierend auf den Klassen der Standardbibliothek zu erstellen, die mit dem Client-Terminal geliefert werden (siehe Schaffung von schlüsselfertigen EAs im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen, alles was du tun musst, ist eine eigene Klasse für Handelssignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale. Die grundlegende Idee ist folgende: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Anschließend ist es notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit eigenen Methoden zu überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Der beste Weg ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung der Kerzenmuster zu überprüfen. Um die Handelssignale, die durch die Kerzenmuster generiert werden, zu bestätigen, genügt es, die Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren und durch den Market Facilitation Index (MFI) Indikator bestätigt werden. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. "Bullish Engulfing" und "Bearish Engulfing" Umkehrkerzenmuster 1.1. Bullish Engulfing Das "Bullish Engulfing" Umkehrmuster entsteht in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des vorhergehenden Tages vollständig überdeckt. Die Schatten (Dochte) der kleinen Kerze sind kurz, was es der großen Kerze ermöglicht, den gesamten Körper der Kerze des vorhergehenden Tages zu überdecken. Abbildung 1. "Bullish Engulfing" Kerzenmuster Die Erkennung des "Bullish Engulfing" Musters erfolgt in der CheckPatternBullishEngulfing()-Methode der CCandlePattern-Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Engulfing" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))              &&  // vorherige Kerze ist bärisch       (Close(1)-Open(1)>AvgBody(1))  &&  // Körper der bullischen Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)>Open(2))              &&  // Schlusskurs der bullischen Kerze ist höher als der Eröffnungskurs der bärischen Kerze       (MidOpenClose(2)<CloseAvg(2))  &&  // Abwärtstrend       (Open(1)<Close(2)))                 // Eröffnungskurs der bullischen Kerze ist niedriger als der Schlusskurs der bärischen       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) Methode der CCandlePattern-Klasse wird verwendet, um die Bildung des "Bullish Engulfing" Kerzenmusters zu überprüfen. 1.2. Bearish Engulfing Das "Bearish Engulfing" Umkehrmuster entsteht in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des vorhergehenden Tages vollständig überdeckt. Die Schatten (Dochte) der kleinen Kerze sind kurz, was es der großen Kerze ermöglicht, den gesamten Körper der Kerze des vorhergehenden Tages zu überdecken. Abbildung 2. "Bearish Engulfing" Kerzenmuster Die Erkennung des "Bearish Engulfing" Musters erfolgt in der CheckPatternBearishEngulfing()-Methode der CCandlePattern-Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Engulfing" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))              &&  // vorherige Kerze ist bullisch       (Open(1)-Close(1)>AvgBody(1)) &&  // Körper der Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)<Open(2))              &&  // Schlusskurs der bärischen Kerze ist niedriger als der Eröffnungskurs der bullischen Kerze       (MidOpenClose(2)>CloseAvg(2)) &&  // Aufwärtstrend       (Open(1)>Close(2)))                // Eröffnungskurs der bärischen Kerze ist höher als der Schlusskurs der bullischen Kerze       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) Methode der CCandlePattern-Klasse wird verwendet, um die Bildung des "Bearish Engulfing" Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den MFI-Indikator Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den MFI-Indikator bestätigt werden. Der Wert des MFI-Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen. Das Schließen der offenen Position hängt von den Werten des MFI-Indikators ab. Dies kann in 2 Fällen erfolgen: Wenn der MFI das entgegengesetzte kritische Niveau erreicht hat (70 für Long-Position und 30 für Short-Position) Wenn das umgekehrte Signal nicht bestätigt wird (wenn der MFI-Indikator die folgenden Werte erreicht: 30 für Long-Position und 70 für Short-Position) Abbildung 3. "Bullish Engulfing" Muster, bestätigt durch MFI Indikator int CBE_BE_MFI::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 CBE_BE_MFI::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 Die Bildung des "Bullish Engulfing" Musters muss durch den MFI-Indikator bestätigt werden: MFI(1)<40 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein). Die Short-Position muss geschlossen werden, wenn der MFI-Indikator die kritischen Niveaus (70 oder 30) nach oben durchbricht. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Betriebsmodus des EAs zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Bullish Engulfing Musters und MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (MFI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linie kreuzt überkaufte/überverkaufte Niveaus (nach oben 30, nach oben 70)   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Bearish Engulfing" Musters muss durch den MFI-Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der MFI-Indikator die kritischen Niveaus (70 oder 30) nach oben durchbricht. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Betriebsmodus des EAs zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Bearish Engulfing Musters und MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linie kreuzt überkaufte/überverkaufte Niveaus (nach oben 70, nach unten 30)    if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die CBE_BE_MFI-Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei abe_be_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh geschehen. Nach dem Neustart des MetaEditors kannst du sie im MQL5 Wizard verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard Gib den Namen des Expert Advisors an: Abbildung 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module der Handelssignale auswählen. Abbildung 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul der Handelssignale. Hinzufügen des Moduls "Signale basierend auf Bullish Engulfing/Bearish Engulfing, bestätigt durch MFI" von Handelssignalen: Abbildung 7. Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Abbildung 8. Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet": Abbildung 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abbildung 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_MFI.mq5 gespeichert wird. Er wird im 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 Durchfü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 Durchfü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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte zum Öffnen und Schließen von Positionen anzugeben. Im Code der LongCondition()- und ShortCondition()-Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben: Position öffnen: 80; Position schließen: 40. Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine LongCondition()- und ShortCondition()-Methoden geben immer 0 zurück. Die Stimmenergebnisse des Hauptmoduls werden auch bei der Durchschnittsbildung der "Stimmen" berücksichtigt. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, also müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Faktors müssen ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt werden. Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel 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 historischen Rücktests Betrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=5). Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1), Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet). Abbildung 11. Testergebnisse des Expert Advisors, basierend auf Bullish Engulfing /Bearish Engulfing + MFI Die besten Eingabeparameter können mithilfe des Strategie Testers des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt mit MQL5 Wizard, ist in expert_abe_be_mfi.mq5 angehängt.

2011.03.10
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und CCI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und CCI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen des MetaTrader 5 zu erstellen. So 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: Wie man ein Modul für Handelssignale erstellt. Im Grunde genommen wird die Klasse für Handelssignale von CExpertSignal abgeleitet. Danach musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. Ein interessantes Buch, das viele Handelsstrategien behandelt, ist "Strategien der besten Trader" (auf Russisch). Hierbei konzentrieren wir uns auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Indikatoren bestätigt werden. Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelssignale, die durch die Kerzenmuster generiert werden, genügt es, eine Klasse abzuleiten, die von CCandlePattern abgeleitet ist, und dort die notwendigen Funktionen hinzuzufügen (zum Beispiel die Bestätigung durch Indikatoren). Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren, bestätigt durch den CCI Indikator. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, was ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern darstellt. 1. "Bullish Engulfing" und "Bearish Engulfing" Umkehrkerzenmuster 1.1. Bullish Engulfing Das "Bullish Engulfing" Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des Vortages vollständig "verschluckt". Die Schatten der kleinen Kerze sind kurz, sodass der Körper der großen Kerze die gesamte Kerze des Vortages abdeckt. Fig. 1. Bullish Engulfing Kerzenmuster Die Erkennung des "Bullish Engulfing" Musters erfolgt in der Methode CheckPatternBullishEngulfing() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des Bullish Engulfing Kerzenmusters      | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // vorherige Kerze ist bearish       (Close(1)-Open(1)>AvgBody(1))  &&  // Körper der bullischen Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)>Open(2))             &&  // Schlusskurs der bullischen Kerze ist höher als der Eröffnungskurs der bearishen Kerze       (MidOpenClose(2)<CloseAvg(2))  &&  // Abwärtstrend       (Open(1)<Close(2)))                // Eröffnungskurs der bullischen Kerze ist niedriger als Schlusskurs der bearishen       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Engulfing" Kerzenmusters zu überprüfen. 1.2. Bearish Engulfing Das "Bearish Engulfing" Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des Vortages vollständig "verschluckt". Die Schatten der kleinen Kerze sind kurz, sodass der Körper der großen Kerze die gesamte Kerze des Vortages abdeckt. Fig. 2. Bearish Engulfing Kerzenmuster Die Erkennung des "Bearish Engulfing" Musters erfolgt in der Methode CheckPatternBearishEngulfing() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des Bearish Engulfing Kerzenmusters      | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // vorherige Kerze ist bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // Körper der Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)<Open(2))            &&  // Schlusskurs der bearishen Kerze ist niedriger als der Eröffnungskurs der bullischen Kerze       (MidOpenClose(2)>CloseAvg(2)) &&  // Aufwärtstrend       (Open(1)>Close(2)))               // Eröffnungskurs der bearishen Kerze ist höher als Schlusskurs der bullischen Kerze       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Engulfing" 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 CCI-Wert muss die kritischen Levels (-50 für Long-Positionen und 50 für Short-Positionen) über- oder unterschreiten. Das Schließen der geöffneten Position hängt von den Werten des CCI ab. Dies kann in 2 Fällen erfolgen: Wenn die CCI-Linie das gegenteilige kritische Niveau (80 für Long-Positionen und -80 für Short-Positionen) erreicht hat. Wenn das Umkehrsignal nicht bestätigt ist (wenn CCI die folgenden Levels erreicht: -80 für Long-Positionen und 80 für Short-Positionen). Fig. 3. Bullish Engulfing Muster, bestätigt durch den CCI-Indikator int CBE_BE_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 CBE_BE_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 öffnen/Short-Position schließen Die Bildung des "Bullish Engulfing" 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). Die Short-Position muss geschlossen werden, wenn der CCI Indikator das kritische Niveau von -80 nach oben überschreitet oder das kritische Niveau von 80 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt                 | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80)                  | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40)                 | //+------------------------------------------------------------------+ int CBE_BE_CCI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Bullish Engulfing Musters und CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/unterkauften Levels (abwärts -80, abwärts -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 öffnen/Long-Position schließen Die Bildung des "Bearish Engulfing" 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). Die Long-Position muss geschlossen werden, wenn der CCI Indikator nach unten die -80 oder 80 Levels überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt                 | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80)                 | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40)                  | //+------------------------------------------------------------------+ int CBE_BE_CCI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Bearish Engulfing Musters und CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1)>50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/unterkauften Levels (abwärts -80, abwärts 80)    if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die CBE_BE_CCI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbe_be_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die Datei candlepatterns.mqh. Du kannst sie im MQL5 Wizard nach dem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Fig. 4. Erstellung eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors angeben: Fig. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die Module der verwendeten Handelssignale auswählen. Fig. 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul der Handelssignale. Hinzufügen des "Signale basierend auf Bullish Engulfing/Bearish Engulfing, bestätigt durch CCI" Moduls der Handelssignale: Fig. 7. Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Fig. 8. Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" nutzen: Fig. 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, werden wir "Handel mit festem Handelsvolumen" verwenden: Fig. 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_CCI.mq5 gespeichert wird, und das wird im 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    // Preislevel zur Ausführung eines Deals input double         Signal_StopLevel       =50.0   // Stop-Loss-Level (in Punkten) input double         Signal_TakeLevel       =50.0   // Take-Profit-Level (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    // Preislevel zur Ausführung eines Deals input double         Signal_StopLevel       =0.0    // Stop-Loss-Level (in Punkten) input double         Signal_TakeLevel       =0.0    // Take-Profit-Level (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 Schwellenwerte angegeben: Long-Position öffnen: 80; Short-Position schließen: 40. Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Stimmenresultate des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, also müssen wir diese Tatsache 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 eingestellt 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. Backtesting-Ergebnisse Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodCCI=49, MA_period=11). 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). Fig. 11. Testergebnisse des Expert Advisors, basierend auf Bullish Engulfing/Bearish Engulfing + CCI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt vom MQL5 Wizard, ist in expert_abe_be_cci.mq5 angehängt.

2011.03.10
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und Stochastic für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelssignale mit Bullish/Bearish Engulfing und Stochastic für MetaTrader 5

Der MQL5 Wizard ermöglicht es, fertige Expert Advisors (EAs) basierend auf den Klassen der Standardbibliothek zu erstellen, die mit dem Client-Terminal geliefert werden (siehe auch Fertige Expert Advisors im MQL5 Wizard erstellen für weitere Details). Mit diesem Tool kannst du deine Handelsideen schnell überprüfen, indem du deine eigene Handelssignalklasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale. Das Grundkonzept ist folgendes: Die Klasse der Handelssignale leitet sich von CExpertSignal ab. Danach musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch Kerzenmuster generiert werden, zu bestätigen, genügt es, die Klasse, die von CCandlePattern erbt, zu schreiben und die erforderlichen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Bullish Engulfing/Bearish Engulfing" basieren, das durch den Stochastic Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse und dient als einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern. 1. "Bullish Engulfing" und "Bearish Engulfing" Umkehrkerzenmuster 1.1. Bullish Engulfing Das "Bullish Engulfing" Umkehrmuster bildet sich in einem Abwärtstrend, wenn eine kleine schwarze Kerze von einer großen weißen Kerze gefolgt wird, die die Kerze des vorherigen Tages vollständig umgibt. Die Schatten (Schwänze) der kleinen Kerze sind kurz, sodass der Körper der großen Kerze die gesamte Kerze des vorherigen Tages abdecken kann. Abbildung 1. Bullish Engulfing Kerzenmuster Die Erkennung des "Bullish Engulfing" Musters ist im CheckPatternBullishEngulfing() Methoden der CCandlePattern Klasse implementiert: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bullish Engulfing" Kerzenmusters    | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // vorherige Kerze ist bearish       (Close(1)-Open(1)>AvgBody(1))  &&  // Körper der bullischen Kerze ist größer als der Durchschnittswert des Körpers       (Close(1)>Open(2))             &&  // Schlusskurs der bullischen Kerze ist höher als der Eröffnungskurs der bearishen Kerze       (MidOpenClose(2)<CloseAvg(2))  &&  // Abwärtstrend       (Open(1)<Close(2)))                // Eröffnungspreis der bullischen Kerze ist niedriger als Schlusskurs der bearishen       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bullish Engulfing" Kerzenmusters zu überprüfen. 1.2. Bearish Engulfing Das "Bearish Engulfing" Umkehrmuster bildet sich in einem Aufwärtstrend, wenn eine kleine weiße Kerze von einer großen schwarzen Kerze gefolgt wird, die die Kerze des vorherigen Tages vollständig umgibt. Die Schatten (Schwänze) der kleinen Kerze sind kurz, was es der großen Kerze ermöglicht, die gesamte Kerze des vorherigen Tages abzudecken. Abbildung 2. Bearish Engulfing Kerzenmuster Die Erkennung des "Bearish Engulfing" Musters ist im CheckPatternBearishEngulfing() Methoden der CCandlePattern Klasse implementiert: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Bearish Engulfing" Kerzenmusters   | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // vorherige Kerze ist bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // Körper der Kerze ist höher als der Durchschnittswert des Körpers       (Close(1)<Open(2))            &&  // Schlusskurs der bearishen Kerze ist niedriger als der Eröffnungspreis der bullischen Kerze       (MidOpenClose(2)>CloseAvg(2)) &&  // Aufwärtstrend       (Open(1)>Close(2)))               // Eröffnungspreis der bearishen Kerze ist höher als Schlusskurs der bullischen Kerze       return(true); //---    return(false);   } Die CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) Methode der CCandlePattern Klasse wird verwendet, um die Bildung des "Bearish Engulfing" Kerzenmusters zu überprüfen. 2. Handelssignale, die durch den Stochastic Indikator bestätigt werden Die Handelssignale für das Öffnen von Long- oder Short-Positionen müssen durch den Stochastic Oszillator bestätigt werden. Die %D-Linie muss höher/niedriger als die entsprechenden kritischen Werte (30 oder 70) sein. Das Schließen einer offenen Position hängt von den Werten des %D Indikators ab. Dies kann in zwei Fällen erfolgen: wenn die %D-Linie das gegenüberliegende kritische Niveau (80 für Long-Positionen und 20 für Short-Positionen) erreicht hat; wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie folgende Niveaus erreicht: 20 für Long-Positionen und 80 für Short-Positionen). Abbildung 3. Bullish Engulfing Muster, bestätigt durch den Stochastic Indikator Die Überprüfung der Handelsbedingungen für den Einstieg und Ausstieg wird in zwei Methoden implementiert: int CBE_BE_Stoch::LongCondition() - überprüft die Bedingungen für das Öffnen einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CBE_BE_Stoch::ShortCondition() - überprüft die Bedingungen für das Öffnen einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position öffnen/Short-Position schließen Die Bildung des "Bullish Engulfing" 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). Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 20 oder 80 Niveaus nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft die 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 CBE_BE_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 an Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für das Öffnen einer Long-Position //--- Bildung des Bullish Engulfing Musters und Signallinie<30   if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signallinienüberkreuzung 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 Die Bildung des "Bearish Engulfing" 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). Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastic Indikators die 80 oder 20 Niveaus nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die 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 CBE_BE_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 an Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für das Öffnen einer Short-Position //--- Bildung des Bearish Engulfing Musters und Signallinie>70   if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signallinienüberkreuzung 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 eines Expert Advisors mit dem MQL5 Wizard Die CBE_BE_Stoch Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die acbe_be_stoch.mqh Datei herunterladen (siehe Anhänge) und sie im client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche gilt für die candlepatterns.mqh Datei. Du kannst sie nach einem Neustart des MetaEditors im MQL5 Wizard verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4. Erstellung eines Expert Advisors mit MQL5 Wizard Gib den Namen des Expert Advisors an: Abbildung 5. Allgemeine Eigenschaften des Expert Advisors Danach musst du die Module der verwendeten Handelssignale auswählen. Abbildung 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des "Signale basierend auf Bullish Engulfing/Bearish Engulfing, bestätigt durch Stochastic" Moduls für Handelssignale: Abbildung 7. Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Abbildung 8. Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" auswählen:Abbildung 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, werden wir "Handel mit festem Handelsvolumen" verwenden:Abbildung 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABE_BE_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) 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 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 die Festlegung von Schwellenwerten für das Öffnen und Schließen von Positionen. Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir die festen Werte der Schwellenwerte festgelegt: Long-Position öffnen: 80; Short-Position schließen: 40. Der Expert Advisor, der vom MQL5 Wizard generiert wurde, öffnet und schließt Positionen mithilfe der "Stimmen" der Handelssignal-Module. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber die Methoden LongCondition() und ShortCondition() des Hauptmoduls geben immer 0 zurück. Die Ergebnisse der Stimmen des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, also müssen wir diesen Fakt 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 festgelegt werden. Die Werte der Eingabeparameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen erfüllt sind. 2.4. Ergebnisse des Backtestings Lass uns das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5) betrachten. 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 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Engulfing + Stochastic Die besten Eingabeparameter können mithilfe des Strategy Testers des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist in expert_abe_be_stoch.mq5 angehängt.

2011.03.10
MQL5 Wizard: Handels-Signale mit Dark Cloud Cover/Piercing Line und RSI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handels-Signale mit Dark Cloud Cover/Piercing Line und RSI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) zu erstellen, basierend auf den Standardbibliotheksklassen, die mit dem Client-Terminal geliefert werden. Wenn du mehr über die Erstellung von EAs mit dem MQL5 Wizard erfahren möchtest, schau dir den Artikel Vorgefertigte Expert Advisors im MQL5 Wizard erstellen an. Die Grundidee ist einfach: Die Handels-Signalklasse wird von CExpertSignal abgeleitet. Du musst die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. In dem Buch "Strategien der besten Trader" (in Russisch) werden viele Handelsstrategien behandelt. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Indikatoren wie Stochastic, CCI, MFI und RSI bestätigt werden. Am besten ist es, eine separate Klasse abzuleiten, die von CExpertSignal stammt, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern stammt, und die entsprechenden Features (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, bestätigt durch den RSI-Indikator. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse und ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "Dark Cloud Cover" und "Piercing Line" 1.1. Dark Cloud Cover Das ist ein bärisches Umkehrmuster, das am Ende eines Aufwärtstrends auftritt. Am ersten Tag bildet sich eine lange weiße Kerze, gefolgt von einer Aufwärtslücke am zweiten Tag. Der zweite Tag schließt jedoch unterhalb des Mittelwerts des ersten Tages. Abbildung 1. "Dark Cloud Cover" Kerzenmuster Die Erkennung des "Dark Cloud Cover"-Mustern erfolgt in der Methode CheckPatternDarkCloudCover() der CCandlePattern-Klasse. //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Dark Cloud Cover" Kerzenmusters       | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover()   { //--- Dark Cloud Cover    if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße)       (Close(1)<Close(2))            && //       (Close(1)>Open(2))                 && // (schließt innerhalb des vorherigen Körpers)       (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)       (Open(1)>High(2)))                // (Öffnung auf neuem Hoch)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) der CCandlePattern-Klasse wird verwendet, um die Bildung des "Dark Cloud Cover"-Kerzenmusters zu überprüfen. 1.2. Piercing Line Die Abwärtslücke am zweiten Tag verstärkt den Abwärtstrend. Doch der Schlusskurs des zweiten Tages liegt über dem Mittelwert des Körpers des ersten Tages. Dies deutet darauf hin, dass sich möglicherweise ein Tiefpunkt bildet. Diese Preisbewegung ist mit Balkendiagrammen nicht annähernd so gut erkennbar wie mit Kerzendiagrammen. Je stärker der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein. Fig. 2. "Piercing Line" Kerzenmuster Die Erkennung des "Piercing Line"-Mustern erfolgt in der Methode CheckPatternPiercingLine() der CCandlePattern-Klasse. //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Piercing Line" Kerzenmusters          | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine()   { //--- Piercing Line    if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße)       (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze)       (Close(1)>Close(2))           && //         (Close(1)<Open(2))            && // (schließt innerhalb des vorherigen Körpers)       (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend)       (Open(1)<Low(2)))                // (Öffnung unterhalb des vorherigen Tiefs)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) der CCandlePattern-Klasse wird verwendet, um die Bildung des "Piercing Line"-Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den RSI-Indikator Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den RSI-Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Niveaus liegen (40 für Long-Positionen und 60 für Short-Positionen). Das Schließen einer offenen Position hängt von den Werten des RSI ab. Dies kann in zwei Fällen geschehen: Wenn der RSI das gegenüberliegende kritische Niveau erreicht hat (70 für Long-Positionen und 30 für Short-Positionen). Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI folgende Niveaus erreicht: 30 für Long-Positionen und 70 für Short-Positionen). Fig. 3. "Dark Cloud Cover" Muster, bestätigt durch den RSI-Indikator int CDC_PL_RSI::LongCondition() - überprüft die Bedingungen für die Eröffnung einer Long-Position (gibt 80 zurück) und das Schließen der Short-Position (gibt 40 zurück); int CDC_PL_RSI::ShortCondition() - überprüft die Bedingungen für die Eröffnung einer Short-Position (gibt 80 zurück) und das Schließen der Long-Position (gibt 40 zurück). 2.1. Long-Position öffnen/Short-Position schließen Die Bildung des "Piercing Line"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 betragen). Die Short-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Markteintritt und -austritt                 | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80)                  | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40)                 | //+------------------------------------------------------------------+ int CDC_PL_RSI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei neuen Balken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Long-Position //--- Bildung des Piercing Line-Musters und RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Short-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.2. Short-Position öffnen/Long-Position schließen Die Bildung des "Dark Cloud Cover"-Musters muss durch den RSI-Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der RSI-Indikator die kritischen Niveaus 70 oder 30 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Markteintritt und -austritt                 | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80)                 | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40)                  | //+------------------------------------------------------------------+ int CDC_PL_RSI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei neuen Balken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen für die Eröffnung einer Short-Position //--- Bildung des Dark Cloud Cover-Musters und RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60))      result=80; //--- Überprüfung der Bedingungen für das Schließen der Long-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach unten 70, nach unten 30)    if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.3. Expert Advisor mit MQL5 Wizard erstellen Die CDC_PL_RSI-Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, musst du die Datei adc_pl_rsi.mqh (siehe Anhänge) herunterladen und im Ordner client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das gleiche gilt für die Datei acandlepatterns.mqh. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Fig. 4. Expert Advisor mit MQL5 Wizard erstellen Lass uns den Namen des Expert Advisors angeben: Fig. 5. Allgemeine Eigenschaften des Expert Advisors Danach wählen wir die verwendeten Module der Handelssignale aus. Fig. 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul der Handelssignale. Hinzufügen des Moduls "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch RSI": Fig. 7. Signal-Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Fig. 8. Signal-Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop wird nicht verwendet": Fig. 9. Trailing-Eigenschaften des Expert Advisors Was die Geldverwaltungseigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Fig. 10. Geldverwaltungseigenschaften des Expert Advisors Durch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_RSI.mq5 gespeichert wird. Dieser wird im terminal_data_folder\MQL5\Experts\ gespeichert. Die standardmäßigen Eingabeparameter des generierten Expert Advisors: //--- Eingaben für das Hauptsignal input int            Signal_ThresholdOpen   =10;     // Signalgrenzwert zum Öffnen [0...100] input int            Signal_ThresholdClose  =10;     // Signalgrenzwert 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;     // Signalgrenzwert zum Öffnen [0...100] input int            Signal_ThresholdClose  =20;     // Signalgrenzwert 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose erlauben es, Grenzwerte für das Öffnen und Schließen von Positionen anzugeben. Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte festgelegt: Position öffnen: 80; Position schließen: 40. Der vom MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" der Handelssignalmodule. Die Stimme des Hauptmoduls (als Container, der alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Stimmenresultate des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul der Handelssignale, daher müssen wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieses Umstands müssen die Werte ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 gesetzt werden. Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur dann erfolgt, wenn die Schließbedingungen erfüllt sind. 2.4. Ergebnisse der Backtests Schauen wir uns die Backtesting-Ergebnisse des Expert Advisors anhand historischer Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14) an. Bei der Erstellung des Expert Advisors haben wir ein festes Volumen verwendet (Handel mit festem Lot, 0.1). Der Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet). Fig. 11. Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + RSI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist in expert_ad_pl_rsi.mq5 angehängt.

2011.02.25
Handelsstrategien mit MQL5 Wizard: Dark Cloud Cover und Piercing Line + MFI
MetaTrader5
Handelsstrategien mit MQL5 Wizard: Dark Cloud Cover und Piercing Line + MFI

Der MQL5 Wizard ermöglicht es Ihnen, fertige Expert Advisors zu erstellen, die auf den Klassen der Standardbibliothek basieren, die zusammen mit dem Client-Terminal geliefert werden (weitere Details finden Sie in MQL5 Wizard: Fertige Expert Advisors erstellen). Damit können Sie Ihre Handelsideen schnell überprüfen, indem Sie Ihre eigene Klasse für Handelssignale erstellen. Die Struktur dieser Klasse und ein Beispiel finden Sie im Artikel MQL5 Wizard: Modul für Handelssignale erstellen. Die grundlegende Idee ist die folgende: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Danach müssen die virtuellen Methoden LongCondition() und ShortCondition() durch Ihre eigenen Methoden überschrieben werden. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), das viele Handelsstrategien behandelt. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Die beste Vorgehensweise ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung von Handelssignalen, die durch Kerzenmuster erzeugt werden, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist, und die erforderlichen Funktionen (z.B. Bestätigung durch Oszillatoren) dort hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "Dark Cloud Cover" und "Piercing Line" 1.1. Dark Cloud Cover Dies ist ein bärisches Umkehrmuster, das am Ende eines Aufwärtstrends auftritt. Am ersten Tag bildet sich eine lange weiße Kerze, und am zweiten Tag entsteht eine Gaps nach oben. Der zweite Tag schließt jedoch unterhalb der Mitte der ersten Kerze. Abb. 1. "Dark Cloud Cover" Kerzenmuster Die Erkennung des "Dark Cloud Cover" Musters wird in der Methode CheckPatternDarkCloudCover() der CCandlePattern Klasse umgesetzt: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Dark Cloud Cover" Kerzenmusters       | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover()   { //--- Dark Cloud Cover    if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße)       (Close(1)<Close(2))            && //       (Close(1)>Open(2))             && // (schließt innerhalb des vorherigen Körpers)       (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)       (Open(1)>High(2)))                // (öffnet bei neuem Hoch)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) der CCandlePattern Klasse wird verwendet, um die Bildung des "Dark Cloud Cover" Kerzenmusters zu überprüfen. 1.2. Piercing Line Die Gaps nach unten am zweiten Tag festigen den Abwärtstrend. Der Schlusskurs des zweiten Tages liegt jedoch über der Mitte des Körpers des ersten Tages. Dies deutet für die Bären darauf hin, dass sich ein Tief bilden könnte. Diese Preisbewegung ist mit Balkendiagrammen nicht so deutlich erkennbar wie mit Kerzendiagrammen. Je mehr der Schlusskurs am zweiten Tag in den ersten Tag eindringt, desto wahrscheinlicher ist der Erfolg des Umkehrsignals. Abb. 2. "Piercing Line" Kerzenmuster Die Erkennung des "Piercing Line" Musters wird in der Methode CheckPatternPiercingLine() der CCandlePattern Klasse umgesetzt: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Piercing Line" Kerzenmusters          | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine()   { //--- Piercing Line    if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße)       (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze)       (Close(1)>Close(2))           && //         (Close(1)<Open(2))            && // (schließt innerhalb des vorherigen Körpers)       (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend)       (Open(1)<Low(2)))                // (öffnet unterhalb des vorherigen Tiefs)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) der CCandlePattern Klasse wird verwendet, um die Bildung des "Piercing Line" Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den MFI-Indikator Die Handelssignale zum Öffnen von Long- oder Short-Positionen müssen durch den MFI Indikator bestätigt werden. Der Wert des MFI-Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen. Das Schließen einer geöffneten Position hängt von den Werten des MFI-Indikators ab. Dies kann in zwei Fällen geschehen: Wenn der MFI den gegenteiligen kritischen Wert erreicht hat (70 für Long-Positionen und 30 für Short-Positionen) Wenn das Umkehrsignal nicht bestätigt wird (wenn der MFI-Indikator die folgenden Werte erreicht: 30 für Long-Positionen und 70 für Short-Positionen) Abb. 3. Bestätigtes "Dark Cloud Cover" Muster durch den MFI Indikator int CDC_PL_MFI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und das Schließen einer Short-Position (gibt 40 zurück); int CDC_PL_MFI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und das Schließen einer Long-Position (gibt 40 zurück). 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "Morning Star" Musters muss durch den MFI Indikator bestätigt werden: MFi(1)<40 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein). Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (70 oder 30) nach oben ü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 CDC_PL_MFI::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 bei Nachrichten-Balken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Piercing Line Musters und MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Dark Cloud Cover" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI-Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (70 oder 30) nach oben ü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 CDC_PL_MFI::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 bei Nachrichten-Balken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Dark Cloud Cover Musters und MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (nach oben 70, nach unten 30)    if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung des Expert Advisors mit MQL5 Wizard Die Klasse CDC_PL_MFI ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, müssen Sie die Datei adc_pl_mfi.mqh herunterladen (siehe Anhänge) und im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei acandlepatterns.mqh gemacht werden. Sie können sie nach einem Neustart des MetaEditors im MQL5 Wizard verwenden. Um einen Expert Advisor zu erstellen, starten Sie den MQL5 Wizard: Abb. 4. Expert Advisor erstellen mit MQL5 Wizard Geben Sie den Namen des Expert Advisors an: Abb. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module für Handelssignale auswählen. Abb. 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch MFI" für Handelssignale: Abb. 7. Signal Eigenschaften des Expert Advisors Das Handelsmodul wurde hinzugefügt: Abb. 8. Signal Eigenschaften des Expert Advisors Sie können beliebige Trailing-Eigenschaften auswählen, wir werden jedoch "Trailing Stop nicht verwendet" nutzen: Abb. 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abb. 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_MFI.mq5 gespeichert wird und sich im terminal_data_folder\MQL5\Experts\ befindet. Die Standard-Inputparameter 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 für den Handel 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 für den Handel 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 festzulegen. Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben: Position ö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 Handelssignalmodulen. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber die Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Ergebnisse der Stimmen des Hauptmoduls werden auch beim "Durchschnitt der Stimmen" genutzt. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 eingestellt werden. Die Werte der Input-Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen wahr sind. 2.4. Ergebnisse der Rücktests Betrachten wir die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11). Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Trading Fixed Lot, 0.1), der Trailing Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet). Abb. 11. Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + MFI Die besten Eingabeparameter können mit dem Strategie Tester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist in expert_adc_pl_mfi.mq5 angehängt.

2011.02.25
MQL5 Wizard: Handelsignale mit Dark Cloud Cover und Piercing Line + CCI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handelsignale mit Dark Cloud Cover und Piercing Line + CCI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) auf Basis der Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden. In dem Artikel Vorgefertigte Expert Advisors im MQL5 Wizard erstellen erhältst du weitere Informationen dazu. Du kannst 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 Handelsignale. Die grundlegende Idee ist folgende: Die Handelsignal-Klasse leitet sich von CExpertSignal ab. Anschließend musst du die LongCondition() und ShortCondition() virtuellen Methoden mit deinen eigenen Methoden überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf umkehrende Kerzenmuster, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale, die durch Kerzenmuster generiert werden, zu bestätigen, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (z. B. Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem umkehrenden Kerzenmuster "Dark Cloud Cover/Piercing Line" basieren, welches durch den CCI Indikator bestätigt wird. Das Handelsignal-Modul basiert auf der CCandlePattern Klasse und ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrende Kerzenmuster: "Dark Cloud Cover" und "Piercing Line" 1.1. Dark Cloud Cover Dies ist ein bärisches Umkehrmuster, das am Ende eines Aufwärtstrends auftritt. Am ersten Tag bildet sich eine lange weiße Kerze und am zweiten Tag entsteht eine Kurslücke nach oben. Allerdings schließt der zweite Tag unterhalb der Mitte der ersten Kerze. Fig. 1. Das Kerzenmuster "Dark Cloud Cover" Die Erkennung des "Dark Cloud Cover"-Mustern erfolgt über die Methode CheckPatternDarkCloudCover() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Formation des "Dark Cloud Cover" Kerzenmusters       | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover()   { //--- Dark Cloud Cover    if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße Kerze)       (Close(1)<Close(2))            && //       (Close(1)>Open(2))             && // (Schlusskurs innerhalb des vorherigen Körpers)       (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)       (Open(1)>High(2)))                // (Öffnung bei neuem Hoch)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) der CCandlePattern Klasse wird verwendet, um die Bildung des "Dark Cloud Cover" Kerzenmusters zu überprüfen. 1.2. Piercing Line Die Kurslücke nach unten am zweiten Tag setzt den Abwärtstrend fort. Der Schlusskurs des zweiten Tages liegt jedoch über der Mitte des Körpers des ersten Tages. Dies deutet darauf hin, dass sich möglicherweise ein Boden bildet. Diese Preisbewegung ist mit Balkendiagrammen nicht so leicht zu erkennen wie mit Kerzendiagrammen. Je tiefer der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein. Fig. 2. Das Kerzenmuster "Piercing Line" Die Erkennung des "Piercing Line"-Mustern erfolgt über die Methode CheckPatternPiercingLine() der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Formation des "Piercing Line" Kerzenmusters          | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine()   { //--- Piercing Line    if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße Kerze)       (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze Kerze)       (Close(1)>Close(2))           && //         (Close(1)<Open(2))            && // (Schluss innerhalb des vorherigen Körpers)       (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend)       (Open(1)<Low(2)))                // (Öffnung unterhalb des vorherigen Tiefs)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) der CCandlePattern Klasse wird verwendet, um die Bildung des "Piercing Line" 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 den kritischen Niveaus liegen (-50 für Long-Position und 50 für Short-Position). Das Schließen der eröffneten Position hängt von den Werten des CCI ab. Dies kann in 2 Fällen erfolgen: wenn die CCI-Linie das gegenteilige kritische Niveau erreicht hat (80 für Long-Position und -80 für Short-Position) wenn das Umkehrsignal nicht bestätigt wird (wenn CCI die folgenden Niveaus erreicht: -80 für Long-Position und 80 für Short-Position) Fig. 3. Das "Dark Cloud Cover" Muster, bestätigt durch den CCI-Indikator int CDC_PL_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 CDC_PL_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 öffnen/Short-Position schließen Die Bildung des "Piercing Line"-Mustern muss durch den CCI Indikator bestätigt werden: CCI(1)<-50 (der Wert des CCI der letzten abgeschlossenen Kerze muss kleiner als -50 sein). Die Short-Position muss geschlossen werden, wenn der CCI Indikator das kritische Niveau -80 nach oben überschreitet oder das kritische Niveau 80 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt                 | //| 1) Markteintritt (Long-Position öffnen, Ergebnis=80)                  | //| 2) Marktausstieg (Short-Position schließen, Ergebnis=40)                 | //+------------------------------------------------------------------+ int CDC_PL_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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei neuen Balken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Piercing Line Musters und CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (abwärts -80, abwärts -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 öffnen/Long-Position schließen Die Bildung des "Dark Cloud Cover"-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). Die Long-Position muss geschlossen werden, wenn der CCI Indikator das Niveau von -80 oder 80 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Einstieg und Ausstieg aus dem Markt                 | //| 1) Markteintritt (Short-Position öffnen, Ergebnis=80)                 | //| 2) Marktausstieg (Long-Position schließen, Ergebnis=40)                  | //+------------------------------------------------------------------+ int CDC_PL_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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei neuen Balken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Dark Cloud Cover Musters und CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Niveaus (abwärts -80, abwärts 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 Klasse CDC_PL_CCI ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acdc_pl_cci.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe gilt für die Datei candlepatterns.mqh. Nach dem Neustart des MetaEditors kannst du sie im MQL5 Wizard verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Fig. 4. Erstellen eines Expert Advisors mit dem MQL5 Wizard Lass uns den Namen des Expert Advisors festlegen: Fig. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die Module der verwendeten Handelssignale auswählen. Fig. 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch CCI" Moduls der Handelssignale: Fig. 7. Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Fig. 8. Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" verwenden: Fig. 9. Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, werden wir "Handel mit fester Handelsgröße" verwenden: Fig. 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken des "Fertig"-Buttons erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_CCI.mq5 gespeichert wird, und zwar im Verzeichnis terminal_data_folder\MQL5\Experts\. 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 für die 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 für die 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen. Im Code der Methoden LongCondition() und ShortCondition() der Handelssignal-Klasse haben wir feste Werte für die Schwellenwerte angegeben: Long-Position öffnen: 80; Short-Position schließen: 40; Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen, indem er die "Stimmen" der Handelssignal-Module verwendet. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module umfasst) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Stimmergebnisse des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir dies bei der Festlegung der Schwellenwerte berücksichtigen. Aus diesem Grund müssen die Werte für ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden. Die Werte der Eingabeparameter Signal_StopLevel und Signal_TakeLevel 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 Rückwärtstests Betrachten wir die Rückwärtstests des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, 2010.01.01-2011.03.16, PeriodCCI=15, MA_period=19). Bei der Erstellung des Expert Advisors haben wir ein festes Volumen verwendet (Handel mit fester Lotgröße, 0.1), der Trailing-Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet). Fig. 11. Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + CCI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist im Anhang expert_adc_pl_cci.mq5 zu finden.

2011.02.25
MQL5 Wizard: Handels-Signale mit Dark Cloud Cover und Piercing Line + Stochastic für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handels-Signale mit Dark Cloud Cover und Piercing Line + Stochastic für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, vorgefertigte Expert Advisors (EAs) zu erstellen, die auf den Standardbibliotheksklassen basieren, die mit dem Client-Terminal geliefert werden (siehe auch Vorgefertigte Expert Advisors im MQL5 Wizard erstellen). Damit kannst du deine Handelsideen schnell überprüfen – du musst lediglich deine eigene Klasse für Handelssignale 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 wie folgt: Die Klasse für Handelssignale leitet sich von CExpertSignal ab. Im nächsten Schritt musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch den Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Für die Bestätigung von Handelssignalen, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten von CCandlePattern und dort die notwendigen Funktionen hinzuzufügen (zum Beispiel eine Bestätigung durch Oszillatoren). Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "Dark Cloud Cover/Piercing Line" basieren, welches durch den Stochastic-Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern-Klasse, es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "Dark Cloud Cover" und "Piercing Line" 1.1. Dark Cloud Cover Dieses Muster ist eine bärische Umkehrformation, die am Ende eines Aufwärtstrends auftritt. An Tag 1 entsteht eine lange weiße Kerze und am Tag 2 wird eine Kurslücke nach oben gebildet. Allerdings schließt der zweite Tag unterhalb der Mitte des ersten Tages. Abbildung 1: "Dark Cloud Cover" Kerzenmuster Die Erkennung des "Dark Cloud Cover"-Musters wird in der Methode CheckPatternDarkCloudCover() der Klasse CCandlePattern durchgeführt: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Dark Cloud Cover"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover()   { //--- Dark Cloud Cover    if((Close(2)-Open(2)>AvgBody(1))  && // (lange weiße)       (Close(1)<Close(2))            && //       (Close(1)>Open(2))            && // (Schluss innerhalb des vorherigen Körpers)       (MidOpenClose(2)>CloseAvg(1))  && // (Aufwärtstrend)       (Open(1)>High(2)))                // (Öffnung bei neuem Hoch)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) der Klasse CCandlePattern wird verwendet, um die Bildung des "Dark Cloud Cover"-Kerzenmusters zu überprüfen. 1.2. Piercing Line Der Kursrückgang am zweiten Tag setzt den Abwärtstrend fort. Allerdings schließt der zweite Tag über der Mitte des Körpers des ersten Tages. Dies deutet auf eine mögliche Bodenbildung hin. Diese Preisbewegung ist auf Balkendiagrammen nicht so deutlich zu erkennen wie auf Kerzendiagrammen. Je tiefer der Schlusskurs des zweiten Tages in den Körper des ersten Tages eindringt, desto wahrscheinlicher wird das Umkehrsignal erfolgreich sein. Abbildung 2: "Piercing Line" Kerzenmuster Die Erkennung des "Piercing Line"-Musters wird in der Methode CheckPatternPiercingLine() der Klasse CCandlePattern durchgeführt: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "Piercing Line"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine()   { //--- Piercing Line    if((Close(1)-Open(1)>AvgBody(1)) && // (lange weiße)       (Open(2)-Close(2)>AvgBody(1)) && // (lange schwarze)       (Close(1)>Close(2))           && //       (Close(1)<Open(2))            && // (Schluss innerhalb des vorherigen Körpers)       (MidOpenClose(2)<CloseAvg(2)) && // (Abwärtstrend)       (Open(1)<Low(2)))                // (Öffnung unterhalb des vorherigen Tiefs)       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) der Klasse CCandlePattern wird verwendet, um die Bildung des "Piercing Line"-Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den Stochastic-Indikator Die Handelssignale zum Öffnen 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 der offenen 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) Abbildung 3: "Dark Cloud Cover" Muster, bestätigt durch den Stochastic-Indikator 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "Piercing Line"-Musters muss durch den Stochastic-Indikator bestätigt werden: StochSignal(1)<30 (Der Wert der Signal-Linie des Stochastic-Indikators der letzten abgeschlossenen Kerze muss kleiner als 30 sein). Die Short-Position muss geschlossen werden, wenn die Signal-Linie des Stochastic-Indikators die 20 oder 80 Niveaus nach oben gekreuzt hat. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei neuen Kerzen   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Piercing Line-Musters und Signal-Linie<30   if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (StochSignal(1)<30))      result=80; //--- Überprüfung der Bedingungen zum Schließen einer Short-Position //--- Signal-Linienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "Dark Cloud Cover"-Musters muss durch den Stochastic-Indikator bestätigt werden: StochSignal(1)>70 (Der Wert der Signal-Linie des Stochastic-Indikators der letzten abgeschlossenen Kerze muss größer als 70 sein). Die Long-Position muss geschlossen werden, wenn die Signal-Linie des Stochastic-Indikators die 80 oder 20 Niveaus nach unten gekreuzt hat. //+------------------------------------------------------------------+ //| Überprüft die Bedingungen für Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei neuen Kerzen   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Dark Cloud Cover-Musters und Signal-Linie>70   if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))      result=80; //--- Überprüfung der Bedingungen zum Schließen einer Long-Position //--- Signal-Linienüberkreuzung 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; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die CDC_PL_Stoch-Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei adc_pl_stoch.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data\MQL5\Include\Expert\Signal\MySignals-Ordner speichern. Das Gleiche gilt für die Datei candlepatterns.mqh. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abbildung 4: Erstellung eines Expert Advisors mit MQL5 Wizard Gib den Namen des Expert Advisors an: Abbildung 5: Allgemeine Eigenschaften des Expert Advisors Danach musst du die Module der verwendeten Handelssignale auswählen. Abbildung 6: Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf Dark Cloud Cover/Piercing Line, bestätigt durch Stochastic": Abbildung 7: Signal Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Abbildung 8: Signal Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" wählen: Abbildung 9: Trailing Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, werden wir "Handel mit festem Handelsvolumen" verwenden: Abbildung 10: Geldmanagement Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ADC_PL_Stoch.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\. Die Standard-Eingabeparameter des generierten Expert Advisors: //--- Eingaben für Hauptsignal input int            Signal_ThresholdOpen   =10;     // Schwellenwert für Signal zum Öffnen [0...100] input int            Signal_ThresholdClose  =10     // Schwellenwert für Signal 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 Hauptsignal input int            Signal_ThresholdOpen   =40;     // Schwellenwert für Signal zum Öffnen [0...100] input int            Signal_ThresholdClose  =20     // Schwellenwert für Signal 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen zu definieren. Im Code der LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte angegeben: Long-Position öffnen: 80; Short-Position schließen: 40. Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe von "Stimmen" aus den Modulen der Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück. Die Abstimmungsergebnisse des Hauptmoduls werden auch bei der Durchschnittsbildung der "Stimmen" verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, daher müssen wir diese Tatsache bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die Schwellenwerte für ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden. Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel 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 historischen Rücktests Betrachten wir die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-02.02.2011, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27). Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1) und der Trailing Stop-Algorithmus wurde nicht verwendet (Trailing nicht verwendet). Abbildung 11: Testergebnisse des Expert Advisors, basierend auf Dark Cloud Cover/Piercing Line + Stochastic Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist in expert_adc_pl_stoch.mq5 angehängt.

2011.02.25
MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI
MetaTrader5
MQL5 Wizard: Handelssignale durch 3 Schwarze Krähen/3 Weiße Soldaten + RSI

Der MQL5 Wizard ermöglicht es, fertig programmierte Expert Advisors (EAs) zu erstellen, basierend auf den Standardbibliotheksklassen, die zusammen mit dem Client-Terminal geliefert werden (eine detaillierte Beschreibung findest du im Artikel Fertige Expert Advisors im MQL5 Wizard erstellen). Mit diesem Tool kannst du deine Handelsideen schnell überprüfen – alles, was du tun musst, ist, deine eigene Klasse für Handelssignale zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale. Die grundlegende Idee ist folgende: Die Klasse für Handelssignale wird von CExpertSignal abgeleitet. Es ist notwendig, die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden zu überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), das viele Handelsstrategien behandelt. Wir konzentrieren uns auf Umkehrkerzenmuster, die durch den Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten ist es, eine separate Klasse, die von CExpertSignal abgeleitet ist, zur Überprüfung der Bildung von Kerzenmustern zu erstellen. Zur Bestätigung der Handelssignale, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Features (zum Beispiel die Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 Schwarze Krähen/3 Weiße Soldaten" basieren, welches durch den Relative Strength Index (RSI) Indikator bestätigt wird. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse und ist ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster: "3 Schwarze Krähen" und "3 Weiße Soldaten" 1.1. 3 Schwarze Krähen Ein bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzenkörpern, die unter dem Schlusskurs des vorherigen Tages geschlossen wurden, wobei der Eröffnungskurs jeder Sitzung innerhalb des Körpers der vorherigen Kerze liegt. Abb. 1. "3 Schwarze Krähen" Kerzenmuster Die Erkennung des "3 Schwarze Krähen" Musters erfolgt über die Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 Schwarze Krähen" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows()   { //--- 3 Schwarze Krähen    if((Open(3)-Close(3)>AvgBody(1)) && // (lange schwarze)       (Open(2)-Close(2)>AvgBody(1)) &&       (Open(1)-Close(1)>AvgBody(1)) &&       (MidPoint(2)<MidPoint(3))     && // (untere Mittelpunkte)       (MidPoint(1)<MidPoint(2)))         return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Schwarze Krähen" Kerzenmusters zu überprüfen. 1.2. 3 Weiße Soldaten Kerzenmuster Ein bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzenkörpern, die über dem Schlusskurs des vorherigen Tages geschlossen wurden, wobei der Eröffnungskurs jeder Sitzung innerhalb des Körpers der vorherigen Kerze liegt. Das Muster ist gültig, solange die Kerze des zweiten Tages im oberen Bereich der Spanne des ersten Tages eröffnet. Bis zum Ende des zweiten Tages sollte sie nahe ihrem Hoch schließen, wobei ein sehr kleiner oder nicht vorhandener oberer Schatten bleibt. Das gleiche Muster wird dann am dritten Tag wiederholt. Abb. 2. "3 Weiße Soldaten" Kerzenmuster Hier ist die Methode zur Erkennung des "3 Weiße Soldaten" Musters: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 Weiße Soldaten" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers()   {    //--- 3 Weiße Soldaten    if((Close(3)-Open(3)>AvgBody(1)) && // lange weiße       (Close(2)-Open(2)>AvgBody(1)) &&       (Close(1)-Open(1)>AvgBody(1)) &&       (MidPoint(2)>MidPoint(3))     && // höhere Mittelpunkte       (MidPoint(1)>MidPoint(2)))       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Weiße Soldaten" Kerzenmusters zu überprüfen. 2. Handelssignale, die durch den RSI Indikator bestätigt werden Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den RSI Indikator bestätigt werden. Der Wert des RSI muss unter/über den kritischen Levels liegen (40 für Long-Positionen und 60 für Short-Positionen). Das Schließen einer offenen Position hängt von den Werten des RSI ab. Dies kann in zwei Fällen geschehen: Wenn der RSI das gegenteilige kritische Level erreicht hat (70 für Long-Positionen und 30 für Short-Positionen) Wenn das Umkehrsignal nicht bestätigt wird (wenn der RSI die folgenden Levels erreicht: 30 für Long-Positionen und 70 für Short-Positionen) Abb. 3. "3 Schwarze Krähen" Muster, bestätigt durch den Stochastik Indikator int CML_RSI::LongCondition() - prüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen einer Short-Position (gibt 40 zurück); int CML_RSI::ShortCondition() - prüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und zum Schließen einer Long-Position (gibt 40 zurück). 2.1. Long-Position eröffnen/Short-Position schließen Die Bildung des "3 Weiße Soldaten" Musters muss durch den RSI Indikator bestätigt werden: RSI(1)<40 (der Wert des RSI der letzten abgeschlossenen Kerze muss weniger als 40 betragen). Die Short-Position muss geschlossen werden, wenn der RSI Indikator das kritische Level 70 oder 30 nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall prüft der EA Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall prüft der EA Handelsbedingungen nur bei Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des 3 Weiße Soldaten Musters und RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen einer Short-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Levels (nach oben 30, nach oben 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "3 Schwarze Krähen" Musters muss durch den RSI Indikator bestätigt werden: RSI(1)>60 (der Wert des RSI Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der RSI Indikator das kritische Level 70 oder 30 nach unten überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall prüft der EA Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall prüft der EA Handelsbedingungen nur bei Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des 3 Schwarze Krähen Musters und RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen einer Long-Position //--- Signal-Linien-Crossover der überkauften/überverkauften Levels (nach unten 70, nach unten 30)   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit MQL5 Wizard Die CML_RSI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie nutzen zu können, musst du die Datei acml_rsi.mqh herunterladen (siehe Anhänge) und im Ordner client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche gilt für die Datei candlepatterns.mqh. Du kannst sie nach dem Neustart von MetaEditor im MQL5 Wizard verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abb. 4. Erstellung eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors angeben: Abb. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module für Handelssignale auswählen. Abb. 6. Signal Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf 3 Schwarze Krähen/3 Weiße Soldaten" für Handelssignale: Abb. 7. Signal Eigenschaften des Expert Advisors Das Modul für Handelssignale wurde hinzugefügt: 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 Hinsichtlich der Eigenschaften des Geldmanagements verwenden wir "Handel mit festem Handelsvolumen": Abb. 10. Geldmanagement Eigenschaften des Expert Advisors Durch Drücken des "Fertig"-Buttons erhalten wir den Code des generierten Expert Advisors, der in Expert_ABC_WS_RSI.mq5 gespeichert wird und sich im Ordner 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 für Öffnen [0...100] input int            Signal_ThresholdClose  =10;     // Signal-Schwellenwert für Schließen [0...100] input double         Signal_PriceLevel      =0.0;    // Preisniveau zur Ausführung eines Handels input double         Signal_StopLevel       =50.0;   // Stop-Loss-Level (in Punkten) input double         Signal_TakeLevel       =50.0  // Take-Profit-Level (in Punkten) müssen ersetzt werden durch: //--- Eingaben für das Hauptsignal input int            Signal_ThresholdOpen   =40;     // Signal-Schwellenwert für Öffnen [0...100] input int            Signal_ThresholdClose  =20;     // Signal-Schwellenwert für Schließen [0...100] input double         Signal_PriceLevel      =0.0;    // Preisniveau zur Ausführung eines Handels input double         Signal_StopLevel       =0.0    // Stop-Loss-Level (in Punkten) input double         Signal_TakeLevel       =0.0    // Take-Profit-Level (in Punkten) Die Signal_ThresholdOpen/Signal_ThresholdClose Eingabeparameter erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen. Im Code von den LongCondition() und ShortCondition() Methoden der Handelssignalklasse haben wir feste Werte für die Schwellenwerte definiert: Open Position: 80; Close Position: 40. Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelssignalmodulen. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine LongCondition() und ShortCondition() Methoden geben immer 0 zurück. Die Ergebnisse der Stimmen des Hauptmoduls werden auch bei der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Umstand bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieses Umstands müssen ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt 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 erfüllt sind. 2.4. Backtesting-Ergebnisse Betrachten wir das Backtesting des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51). 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). Abb. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarze Krähen/3 Weiße Soldaten + RSI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der mit MQL5 Wizard erstellt wurde, ist in expert_abc_ws_rsi.mq5 angehängt.

2011.02.18
MQL5 Wizard: Handels-Signale mit 3 Schwarzen Krähen und 3 Weißen Soldaten + MFI
MetaTrader5
MQL5 Wizard: Handels-Signale mit 3 Schwarzen Krähen und 3 Weißen Soldaten + MFI

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors (EAs) basierend auf den Standardbibliotheken zu erstellen, die mit dem Client-Terminal geliefert werden (siehe auch Fertige Expert Advisors im MQL5 Wizard erstellen für Details). Damit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handels-Signalklasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-Signale. Die grundlegende Idee ist folgende: Die Klasse der Handels-Signale wird von CExpertSignal abgeleitet. Danach musst du die LongCondition() und ShortCondition() virtuellen Methoden mit deinen eigenen Methoden überschreiben. Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden. Am besten erstellst du eine separate Klasse, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Um die Handelssignale zu bestätigen, die durch Kerzenmuster generiert werden, genügt es, eine Klasse zu schreiben, die von CCandlePattern abgeleitet ist und die notwendigen Funktionen (zum Beispiel Bestätigungen durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 Schwarze Krähen/3 Weiße Soldaten" basieren, das durch den Market Facilitation Index (MFI) Indikator bestätigt wird. Das Modul der Handelssignale basiert auf der CCandlePattern Klasse, es ist ein einfaches Beispiel für die Nutzung zur Erstellung von Handelssignalen mit Kerzenmustern. 1. Umkehrkerzenmuster "3 Schwarze Krähen" und "3 Weiße Soldaten" 1.1. 3 Schwarze Krähen Ein bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die jeweils niedriger als die vorherige Kerze schließen, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt. Fig. 1. "3 Schwarze Krähen" Kerzenmuster Die Erkennung des "3 Schwarzen Krähen" Musters erfolgt über die Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 Schwarzen Krähen" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows()   { //--- 3 Schwarze Krähen    if((Open(3)-Close(3)>AvgBody(1)) && // (lange schwarze)       (Open(2)-Close(2)>AvgBody(1)) &&       (Open(1)-Close(1)>AvgBody(1)) &&       (MidPoint(2)<MidPoint(3))      && // (niedrigere Mittelpunkte)       (MidPoint(1)<MidPoint(2)))      return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Schwarzen Krähen" Kerzenmusters zu überprüfen. 1.2. 3 Weiße Soldaten Kerzenmuster Ein bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die höher schließen als die vorherige Kerze, wobei jede Sitzungseröffnung innerhalb des Körpers der vorherigen Kerze erfolgt. Das Muster ist gültig, solange die Kerze des zweiten Tages im oberen Bereich der Spanne des ersten Tages eröffnet. Bis zum Ende des zweiten Tages sollte sie in der Nähe ihres Hochs schließen und einen sehr kleinen oder nicht vorhandenen oberen Schatten hinterlassen. Das gleiche Muster wird dann am dritten Tag wiederholt. Fig. 2. "3 Weiße Soldaten" Kerzenmuster Hier ist die Methode zur Erkennung des "3 Weiße Soldaten" Musters: //+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 Weiße Soldaten" Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers()   {    //--- 3 Weiße Soldaten    if((Close(3)-Open(3)>AvgBody(1)) && // (lange weiße)       (Close(2)-Open(2)>AvgBody(1)) &&       (Close(1)-Open(1)>AvgBody(1)) &&       (MidPoint(2)>MidPoint(3))      && // (höhere Mittelpunkte)       (MidPoint(1)>MidPoint(2)))       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der CCandlePattern Klasse wird verwendet, um die Bildung des "3 Weiße Soldaten" Kerzenmusters zu überprüfen. 2. Handelssignale, bestätigt durch den MFI Indikator Die Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den MFI Indikator bestätigt werden. Der Wert des MFI Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen. Der Abschluss einer offenen Position hängt von den Werten des MFI Indikators ab. Dies kann in zwei Fällen erfolgen: Wenn der MFI den gegenteiligen kritischen Wert erreicht hat (70 für Long-Positionen und 30 für Short-Positionen) Wenn das Umkehrsignal nicht bestätigt wird (wenn der MFI Indikator die folgenden Werte erreicht: 30 für Long-Positionen und 70 für Short-Positionen) Fig. 3. "3 Schwarze Krähen" Muster, bestätigt durch den MFI Indikator int CBC_WS_MFI::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 CBC_WS_MFI::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 Die Bildung des "3 Weiße Soldaten" Musters muss durch den MFI Indikator bestätigt werden: MFi(1)<40 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein). Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (70 oder 30) nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des 3 Weiße Soldaten Musters und MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 30, nach oben 70)   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Bildung des "3 Schwarzen Krähen" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein). Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Werte (70 oder 30) nach oben überschreitet. //+------------------------------------------------------------------+ //| Überprüft Bedingungen für den Eintritt und Austritt aus dem Markt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::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 Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des 3 Schwarzen Krähen Musters und MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signal-Linienüberkreuzung der überkauften/überverkauften Niveaus (nach oben 70, nach unten 30)   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40; //--- Ergebnis zurückgeben    return(result);   } 2.3. Erstellung eines Expert Advisors mit dem MQL5 Wizard Die CBC_WS_MFI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei abc_ws_mfi.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Das gleiche solltest du mit der Datei acandlepatterns.mqh tun. Du kannst sie im MQL5 Wizard nach dem Neustart von MetaEditor verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Fig. 4. Erstellung eines Expert Advisors mit dem MQL5 Wizard Lass uns den Namen des Expert Advisors festlegen: Fig. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module für Handelssignale auswählen. Fig. 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handelssignale. Hinzufügen des Moduls "Signale basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten, bestätigt durch MFI": Fig. 7. Signal-Eigenschaften des Expert Advisors Modul der Handelssignale hinzugefügt: Fig. 8. Signal-Eigenschaften des Expert Advisors Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht genutzt": Fig. 9. Trailing-Eigenschaften des Expert Advisors Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Fig. 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Schaltfläche erhalten wir den Code des generierten Expert Advisors, der in Expert_ABC_WS_MFI.mq5 gespeichert wird, im terminal_data_folder\MQL5\Experts\. Die standardmäßigen 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) 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 Handels input double         Signal_StopLevel       =0.0    // Stop Loss Niveau (in Punkten) input double         Signal_TakeLevel       =0.0    // Take Profit Niveau (in Punkten) Die Eingabeparameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen die Festlegung von Schwellenwerten für das Öffnen und Schließen von Positionen. Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte für die Schwellenwerte festgelegt: Position eröffnen: 80; Position schließen: 40. Der von MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen unter Verwendung der "Stimmen" aus den Modulen für Handelssignale. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() 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, also müssen wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen. Wegen dieses Umstands müssen die ThresholdOpen und ThresholdClose auf 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden. Die Werte der Eingabeparameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen erfüllt sind. 2.4. Testergebnisse der Historie Schauen wir uns die Backtests des Expert Advisors mit historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-16.03.2011, PeriodMFI=37, MA_period=13) an. 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). Fig. 11. Testergebnisse des Expert Advisors, basierend auf 3 Schwarzen Krähen/3 Weißen Soldaten + MFI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, erstellt mit dem MQL5 Wizard, ist im expert_abc_ws_mfi.mq5 angehängt.

2011.02.18
MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5
MetaTrader5
MQL5 Wizard: Handels-Signale mit 3 schwarzen Krähen / 3 weißen Soldaten + CCI für MetaTrader 5

Der MQL5 Wizard ermöglicht es dir, fertige Expert Advisors zu erstellen, die auf den Standardbibliotheksklassen basieren, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellen von Fertigen Expert Advisors im MQL5 Wizard für weitere Details). Damit kannst du deine Handelsideen schnell überprüfen, alles was du tun musst, ist, eine eigene Handels-Signalklasse zu erstellen. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handels-Signale. Das grundlegende Konzept ist folgendes: Die Handels-Signalklasse leitet sich von CExpertSignal ab. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben. Es gibt ein Buch "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir werden uns auf Umkehrkerzenmuster konzentrieren, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden. Der beste Weg ist, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Ausbildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handels-Signale, die durch Kerzenmuster generiert werden, reicht es aus, die Klasse, die von CCandlePattern abgeleitet ist, zu schreiben und die notwendigen Funktionen (zum Beispiel die Bestätigung durch Oszillatoren) hinzuzufügen. Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 schwarze Krähen / 3 weiße Soldaten" basieren, welches durch den Commodity Channel Index Indikator bestätigt wird. Das Modul der Handels-Signale basiert auf der CCandlePattern Klasse, ein einfaches Beispiel für die Nutzung zur Erstellung von Handels-Signalen mit Kerzenmustern. 1. Umkehrkerzenmuster "3 schwarze Krähen" und "3 weiße Soldaten" 1.1. 3 schwarze Krähen Ein bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die jeweils unter dem vorherigen Tag geschlossen haben, wobei sich der Eröffnungskurs jeder Sitzung im Körper der vorherigen Kerze befindet. Abb. 1. Kerzenmuster "3 schwarze Krähen" Die Erkennung des "3 schwarzen Krähen" Musters wird in der Methode CheckPatternThreeBlackCrows der CCandlePattern Klasse implementiert: //+------------------------------------------------------------------+ //| Überprüft die Ausbildung des Kerzenmusters "3 schwarze Krähen" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows()   { //--- 3 schwarze Krähen    if((Open(3)-Close(3)>AvgBody(1)) && // (lange schwarze)       (Open(2)-Close(2)>AvgBody(1)) &&       (Open(1)-Close(1)>AvgBody(1)) &&       (MidPoint(2)<MidPoint(3))     && // (niedrigere Mittelpunkte)       (MidPoint(1)<MidPoint(2)))         return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der CCandlePattern Klasse wird verwendet, um die Ausbildung des Kerzenmusters "3 schwarze Krähen" zu überprüfen. 1.2. Kerzenmuster 3 weiße Soldaten Ein bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die jeweils über dem vorherigen Tag geschlossen haben, wobei sich der Eröffnungskurs jeder Sitzung im Körper der vorherigen Kerze befindet. Das Muster ist gültig, solange die Kerze des zweiten Tages in der oberen Hälfte des Bereichs des ersten Tages öffnet. Bis zum Ende des zweiten Tages sollte sie nahe ihrem Hoch schließen, wobei ein sehr kleiner oder nicht vorhandener oberer Schatten verbleibt. Das gleiche Muster wird dann am dritten Tag wiederholt. Abb. 2. Kerzenmuster "3 weiße Soldaten" Hier ist die Methode zur Erkennung des "3 weißen Soldaten" Musters: //+------------------------------------------------------------------+ //| Überprüft die Ausbildung des Kerzenmusters "3 weiße Soldaten" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers()   {    //--- 3 weiße Soldaten    if((Close(3)-Open(3)>AvgBody(1)) && // lange weiße       (Close(2)-Open(2)>AvgBody(1)) &&       (Close(1)-Open(1)>AvgBody(1)) &&       (MidPoint(2)>MidPoint(3))     && // höhere Mittelpunkte       (MidPoint(1)>MidPoint(2)))       return(true); //---    return(false);   } Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der CCandlePattern Klasse wird verwendet, um die Ausbildung des Kerzenmusters "3 weiße Soldaten" zu überprüfen. 2. Handels-Signale, bestätigt durch den CCI-Indikator Die Handels-Signale 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 Werten liegen (-50 für die Long-Position und 50 für die Short-Position) Das Schließen einer offenen Position hängt von den Werten des CCI ab. Dies kann in zwei Fällen erfolgen: Wenn die CCI-Linie das gegenteilige kritische Niveau erreicht hat (80 für die Long-Position und -80 für die Short-Position) Wenn das Umkehrsignal nicht bestätigt wird (wenn der CCI die folgenden Werte erreicht: -80 für die Long-Position und 80 für die Short-Position) Abb. 3. "3 schwarze Krähen" Muster, bestätigt durch den CCI-Indikator int CBC_WS_CCI::LongCondition() - prüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen der Short-Position (gibt 40 zurück); int CBC_WS_CCI::ShortCondition() - prü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 Die Ausbildung des "3 schwarzen Krähen" 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). Die Short-Position muss geschlossen werden, wenn der CCI Indikator das kritische Niveau -80 nach oben überschreitet 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 CBC_WS_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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Ausbildung des 3 weißen Soldaten Musters und CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signalzeilenüberkreuzung der überkauften/verkauften Niveaus (nach unten -80, nach unten -80)    if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.2. Short-Position eröffnen/Long-Position schließen Die Ausbildung des "3 weißen Soldaten" 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). Die Long-Position muss geschlossen werden, wenn der CCI Indikator nach unten unter die -80 oder 80 Niveaus gefallen ist. //+------------------------------------------------------------------+ //| Ü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 CBC_WS_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 die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft der EA die Handelsbedingungen nur bei Nachrichtenbalken    int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Ausbildung des 3 schwarzen Krähen Musters und CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signalzeilenüberkreuzung der überkauften/verkauften Niveaus (nach unten -80, nach unten 80)    if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))      result=40; //--- Rückgabe des Ergebnisses    return(result);   } 2.3. Erstellen eines Expert Advisors mit MQL5 Wizard Die CBC_WS_CCI Klasse ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbc_ws_cci.mqh herunterladen (siehe Anhänge) und sie im client_terminal_data older\MQL5\Include\Expert\Signal\MySignals speichern. Das Gleiche sollte mit der Datei candlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden. Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard: Abb. 4. Erstellen eines Expert Advisors mit MQL5 Wizard Lass uns den Namen des Expert Advisors angeben: Abb. 5. Allgemeine Eigenschaften des Expert Advisors Danach müssen wir die verwendeten Module der Handels-Signale auswählen. Abb. 6. Signal-Eigenschaften des Expert Advisors In unserem Fall verwenden wir nur ein Modul für Handels-Signale. Das Hinzufügen des "Signals basierend auf 3 schwarzen Krähen/3 weißen Soldaten, bestätigt durch CCI" Moduls der Handels-Signale: Abb. 7. Signal-Eigenschaften des Expert Advisors Modul der Handels-Signale hinzugefügt: 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 Was die Money-Management-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen": Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors Durch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der sich in Expert_ABC_WS_CCI.mq5 befindet und im terminal_data_folder\MQL5\Experts\ gespeichert wird. 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose ermöglichen es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen. In den Methoden LongCondition() und ShortCondition() der Handels-Signalklasse haben wir die festen Werte der Schwellenwerte angegeben: Position öffnen: 80; Position schließen: 40. Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen basierend auf den "Stimmen" der Handels-Signalmodule. Die Stimme des Hauptmoduls (als Container, das aus allen hinzugefügten Modulen besteht) wird ebenfalls verwendet, aber dessen LongCondition() und ShortCondition() Methoden geben immer 0 zurück. Die Abstimmungsergebnisse des Hauptmoduls werden auch in der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Handels-Signalmodule, daher müssen wir dieses Faktum bei der Festlegung der Schwellenwerte berücksichtigen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose als 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden. Die Werte der Eingabeparameter Signal_StopLevel und Signal_TakeLevel 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 historischen Backtests Betrachten wir die Backtests des Expert Advisors anhand historischer Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13). 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). Abb. 11. Testergebnisse des Expert Advisors, basierend auf 3 schwarzen Krähen/3 weißen Soldaten + CCI Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden. Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist im expert_abc_ws_cci.mq5 angehängt.

2011.02.18
MQL5 Wizard: Handelssignale mit 3 schwarzen Krähen/3 weißen Soldaten und Stochastik erstellen
MetaTrader5
MQL5 Wizard: Handelssignale mit 3 schwarzen Krähen/3 weißen Soldaten und Stochastik erstellen

Der MQL5 Wizard ermöglicht es dir, sofort einsatzbereite Expert Advisors (EAs) basierend auf den Standardbibliotheksklassen zu erstellen, die zusammen mit dem Client-Terminal geliefert werden (siehe Bereitstellung von Expert Advisors im MQL5 Wizard für weitere Details). Du kannst deine Handelsideen schnell überprüfen, indem du einfach deine eigene Klasse für Handelssignale erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: Erstellung eines Moduls für Handelssignale.Die grundlegende Idee ist wie folgt: Die Klasse der Handelssignale wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.Es gibt ein Buch mit dem Titel "Strategien der besten Trader" (auf Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch Stochastik, CCI, MFI und RSI Oszillatoren bestätigt werden.Die beste Vorgehensweise ist, eine separate Klasse abzuleiten, die von CExpertSignal abgeleitet ist, um die Ausbildung von Kerzenmustern zu überprüfen. Zum Bestätigen der Handelssignale, die durch Kerzenmuster generiert werden, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern stammt, und die erforderlichen Funktionen (z.B. Bestätigung durch Oszillatoren) dort hinzuzufügen.Hier betrachten wir die Signale, die auf dem Umkehrkerzenmuster "3 schwarze Krähen/3 weiße Soldaten" basieren, das durch den Stochastik-Indikator bestätigt wird. Das Handelsmodul basiert auf der Klasse CCandlePattern, ein einfaches Beispiel für die Erstellung von Handelssignalen mit Kerzenmustern.1. Umkehrkerzenmuster "3 schwarze Krähen" und "3 weiße Soldaten"1.1. 3 schwarze KrähenEin bärisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Aufwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die unter dem Schlusskurs des vorherigen Tages geschlossen haben, wobei sich die Eröffnung jeder Sitzung im Körper der vorherigen Kerze befindet.Abbildung 1. Kerzenmuster 3 schwarze KrähenDie Erkennung des "3 schwarze Krähen"-Musters wird in der Methode CheckPatternThreeBlackCrows der Klasse CCandlePattern implementiert://+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 schwarze Krähen"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows()   { //--- 3 schwarze Krähen    if((Open(3)-Close(3)>>AvgBody(1)) && // (lange schwarze)       (Open(2)-Close(2)>>AvgBody(1)) &&       (Open(1)-Close(1)>>AvgBody(1)) &&       (MidPoint(2)<MidPoint(3))     && // (niedrigere Mittelpunkte)       (MidPoint(1)<MidPoint(2)))         return(true); //---    return(false);   }Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) der Klasse CCandlePattern wird verwendet, um die Bildung des "3 schwarze Krähen"-Kerzenmusters zu überprüfen.1.2. Kerzenmuster 3 weiße SoldatenEin bullisches Kerzenmuster, das verwendet wird, um die Umkehr des aktuellen Abwärtstrends vorherzusagen. Dieses Muster besteht aus drei aufeinanderfolgenden langen Kerzen, die höher als der Schlusskurs des vorherigen Tages geschlossen haben, wobei sich die Eröffnung jeder Sitzung im Körper der vorherigen Kerze befindet.Das Muster ist gültig, solange die Kerze des zweiten Tages in der oberen Hälfte des Bereichs des ersten Tages eröffnet. Am Ende des zweiten Tages sollte sie nahe ihrem Hoch schließen und einen sehr kleinen oder nicht vorhandenen oberen Schatten hinterlassen. Das gleiche Muster wird am dritten Tag wiederholt.Abbildung 2. Kerzenmuster 3 weiße SoldatenHier ist die Methode zur Erkennung des "3 weiße Soldaten"-Musters://+------------------------------------------------------------------+ //| Überprüft die Bildung des "3 weiße Soldaten"-Kerzenmusters | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers()   {    //--- 3 weiße Soldaten    if((Close(3)-Open(3)>>AvgBody(1)) && // lange weiße       (Close(2)-Open(2)>>AvgBody(1)) &&       (Close(1)-Open(1)>>AvgBody(1)) &&       (MidPoint(2)>MidPoint(3))     && // höhere Mittelpunkte       (MidPoint(1)>MidPoint(2)))       return(true); //---    return(false);   }Die Methode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) der Klasse CCandlePattern wird verwendet, um die Bildung des "3 weiße Soldaten"-Kerzenmusters zu überprüfen.2. Handelssignale, bestätigt durch den Stochastik-IndikatorDie Handelssignale zum Öffnen einer Long- oder Short-Position müssen durch den Stochastik-Oszillator bestätigt werden. Die %D-Linie muss über bzw. unter dem entsprechenden kritischen Niveau (30 oder 70) liegen.Das Schließen der geöffneten Position hängt von den Werten des %D-Indikators ab. Dies kann in zwei Fällen erfolgen: Wenn die %D-Linie das gegenüberliegende kritische Niveau erreicht (80 für eine Long-Position und 20 für eine Short-Position)Wenn das Umkehrsignal nicht bestätigt wird (wenn die %D-Linie die folgenden Niveaus erreicht: 20 für eine Long-Position und 80 für eine Short-Position)Abbildung 3. 3 weiße Soldaten-Muster, bestätigt durch den Stochastik-Indikator Die Überprüfung der Handelsbedingungen für den Einstieg und Ausstieg erfolgt in zwei Methoden:int CBC_WS_Stoch::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und schließt die Short-Position (gibt 40 zurück);int CBC_WS_Stoch::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und schließt die Long-Position (gibt 40 zurück).2.1. Long-Position eröffnen/Short-Position schließenDie Bildung des "3 weiße Soldaten"-Musters muss durch den Stochastik-Indikator bestätigt werden: StochSignal(1)<30 (der Wert der Signallinie des Stochastik-Indikators der letzten abgeschlossenen Kerze muss weniger als 30 sein).Die Short-Position muss geschlossen werden, wenn die Signallinie des Stochastik-Indikators die 20 oder 80 Niveaus nach oben überschreitet.//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktausgang (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_Stoch::LongCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Long-Position //--- Bildung des 3 weiße Soldaten-Musters und Signallinie<30   if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Short-Position //--- Signallinie kreuzt überkaufte/verkaufte 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 eröffnen/Long-Position schließenDie Bildung des "3 schwarze Krähen"-Musters muss durch den Stochastik-Indikator bestätigt werden: StochSignal(1)>70 (der Wert der Signallinie des Stochastik-Indikators der letzten abgeschlossenen Kerze muss größer als 70 sein).Die Long-Position muss geschlossen werden, wenn die Signallinie des Stochastik-Indikators die 80 oder 20 Niveaus nach unten überschreitet.//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -ausstieg | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktausgang (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CBC_WS_Stoch::ShortCondition()   {    int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken   int idx   =StartIndex(); //--- Überprüfung der Bedingungen zum Öffnen einer Short-Position //--- Bildung des 3 schwarze Krähen-Musters und Signallinie>70   if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70))      result=80; //--- Überprüfung der Bedingungen zum Schließen der Long-Position //--- Signallinie kreuzt überkaufte/verkaufte 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 eines Expert Advisors mit MQL5 WizardDie Klasse CBC_WS_Stoch ist nicht in den Standardbibliotheksklassen enthalten. Um sie zu verwenden, musst du die Datei acbc_ws_stoch.mqh herunterladen (siehe Anhänge) und sie im Verzeichnis client_terminal_data\MQL5\Include\Expert\Signal\MySignals speichern. Dasselbe sollte mit der Datei candlepatterns.mqh gemacht werden. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:Abbildung 4. Erstellung eines Expert Advisors mit MQL5 WizardLass uns den Namen des Expert Advisors angeben:Abbildung 5. Allgemeine Eigenschaften des Expert AdvisorsDanach müssen wir die Module der verwendeten Handelssignale auswählen.Abbildung 6. Signal Eigenschaften des Expert AdvisorsIn unserem Fall verwenden wir nur ein Modul für Handelssignale.Hinzufügen des Moduls "Signale basierend auf 3 schwarzen Krähen/3 weißen Soldaten, bestätigt durch Stochastik":Abbildung 7. Signal Eigenschaften des Expert AdvisorsModul für Handelssignale hinzugefügt:Abbildung 8. Signal Eigenschaften des Expert AdvisorsDu kannst beliebige Trailing-Eigenschaften auswählen, aber wir verwenden "Trailing Stop nicht verwendet":Abbildung 9. Trailing Eigenschaften des Expert AdvisorsBezüglich der Geldmanagement-Eigenschaften verwenden wir "Handel mit festem Handelsvolumen":Abbildung 10. Geldmanagement Eigenschaften des Expert AdvisorsDurch Drücken der "Fertig"-Taste erhalten wir den Code des generierten Expert Advisors, der in Expert_ABC_WS_Stoch.mq5 gespeichert wird, und der sich im Verzeichnis terminal_data_folder\MQL5\Experts\ befindet.Die Standard-Eingabeparameter des generierten Expert Advisors://--- Eingaben für 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 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 Parameter Signal_ThresholdOpen/Signal_ThresholdClose erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.Im Code der Methoden LongCondition() und ShortCondition() der Handelssignalklasse haben wir die festen Werte der Schwellenwerte festgelegt:Position öffnen: 80;Position schließen: 40.Der durch den MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelssignalen. Die Stimme des Hauptmoduls (als Container, das alle hinzugefügten Module enthält) wird ebenfalls verwendet, aber seine Methoden LongCondition() und ShortCondition() geben immer 0 zurück.Die Ergebnisse der Stimmen des Hauptmoduls werden auch im "Stimmen"-Durchschnitt verwendet. In unserem Fall haben wir: Hauptmodul + 1 Modul für Handelssignale, sodass wir diesen Fakt bei der Festlegung der Schwellenwerte berücksichtigen müssen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose als 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden.Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel 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 historischen RücktestsBetrachten wir den Rücktest des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).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 11. Testergebnisse des Expert Advisors, basierend auf 3 schwarzen Krähen/3 weißen Soldaten + StochastikDie besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.Der Code des Expert Advisors, der vom MQL5 Wizard erstellt wurde, ist im expert_abc_ws_stoch.mq5 angehängt.

2011.02.16
Erste Vorherige 56 57 58 59 60 61 62 63 64 Nächste Letzte