
MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 48): Bill Williams Alligator
Einführung
Der Alligator Indicator, der von Bill Williams unter der Prämisse entwickelt wurde, dass die Märkte dazu neigen, nur etwa 15 - 30 % der Zeit stark in eine bestimmte Richtung zu tendieren. Es ist von Natur aus ein Trendfolgeinstrument, das Händlern hilft, die Marktrichtung und potenzielle Fraktale oder Wendepunkte zu erkennen. Dies wird durch die Verwendung von drei geglätteten gleitenden Durchschnitten (SMAs) erreicht, die nicht nur auf unterschiedliche Mittelungszeiträume eingestellt sind, sondern auch um unterschiedliche Beträge nach vorne verschoben werden.
Diese drei SMAs werden in Anlehnung an das Maul eines Alligators oft als Kiefer (Jaw), Zähne (Teeth) und Lippen (Lips) bezeichnet. Diese 3 Durchschnittspuffer helfen den Händlern, die Phasen des Marktes zu visualisieren, zu denen typischerweise Trendphasen, Konsolidierungsphasen und Übergangsphasen gehören. Wenn sich die 3 Durchschnitte in einer engen Spanne befinden, wird dies oft als der Alligator bezeichnet, der ein Nickerchen macht, welches mit der von Bill Williams bezeichneten richtungslosen Phase übereinstimmt, die in den meisten Märkten 85 - 70 % der Zeit in Anspruch nimmt. Der andere Teil (15 - 30 %) ist durch eine Divergenz dieser drei Puffer gekennzeichnet, eine Divergenz, die immer eine bestimmte Richtung entweder nach oben oder nach unten anzeigt. Diese Phase wird oft als das Aufwachen des Alligators bezeichnet, und es wird angenommen, dass die meisten Händler in dieser Phase versuchen sollten, Geld zu verdienen.
Dies sind die Formeln für die 3 SMAs. Zuerst haben wir den Kiefer (jaw):
wobei:
- SMA 13 (Close) 13-periodiger, geglätteter gleitender Durchschnitt des Schlusskurses.
- Verschiebung: Die Linie des Kiefers ist um 8 Perioden (Balken) nach vorne verschoben, um den Trend zu glätten und eine Vorwegnahme der Marktrichtung zu ermöglichen.
Dann die Zähne (teeth):
wobei:
- SMA 8 (Close): 8-periodischer geglätteter gleitender Durchschnitt des Schlusskurses.
- Verschiebung: Die Linie der Zähne wird um 5 Perioden nach vorne verschoben.
Und schließlich die Lippen (lips):
wobei:
- SMA 5 (Close): 5-Perioden geglätteter gleitender Durchschnitt des Schlusskurses.
- Verschiebung: Die Lippen-Linie wird um 3 Perioden (Balken) nach vorne verschoben.
Die Merkmale des Alligators können auch mit einem Fressverhalten verglichen werden. Wenn wir mit dem Teil beginnen, in dem die Werte von den drei Puffern vermischt sind oder zu dicht beieinander liegen, in dieser Phase, die auch als Schlafphase bezeichnet wird, spricht man von einer Konsolidierung der Märkte oder von „Whipsawing“. Williams verglich dies mit einem schlafenden Alligator, und wie in der Einleitung angedeutet, ist diese Zyklusphase bei den meisten Wertpapieren vorherrschend und nimmt die meiste Zeit in Anspruch. Was darauf folgen würde, wäre also das „Aufwachen“.
In dieser Phase des Zyklus beginnen die drei SMAs zu divergieren oder sich zu trennen, in der Regel bereits richtungsweisend. Das bedeutet, dass sie alle bei einem Trend beginnen, sich zu trennen, wobei sie bei steigenden Kursen sich nach Lippen-Zähne-Kiefer anordnen und beim fallenden umgekehrt, auch wenn das noch nicht unbedingt sofort eingehalten wird. Nach dem Aufwachen folgt die „Fressen“.
In dieser Phase des Zyklus beginnen die Linien sauberer zu divergieren, und ihre jew. Anordnung von Lippen-Zähne-Kiefer bei einem Aufwärtstrend oder Kiefer-Zähne-Lippen bei einem Abwärtstrend (Anordnung von oben) beginnt sich durchzusetzen. Händler halten dies oft für einen guten Zeitpunkt, um der Trendrichtung zu folgen, da zu diesem Zeitpunkt das meiste Geld verdient werden kann. Es ist die dritte Stufe des Zyklus, aber nicht die letzte, denn es folgt die Stufe „zufrieden“.
In dieser letzten Phase, die als „zufriedene“ Phase bezeichnet wird, beginnen die drei SMAs zu konvergieren. Diese Umkehrung kann darauf hindeuten, dass der Trend endet oder in eine Korrekturphase eintritt, und daher könnte es für einige Händler eine gute Idee sein, Gewinne mitzunehmen, wenn diese Phase signalisiert wird. Die einfache Konstruktion des Alligator-Indikators macht ihn zu einem relativ unkomplizierten Instrument, um die aktuelle Phase des Marktes und potenzielle Richtungsänderungen zu verstehen, indem er ausschließlich geglättete gleitende Durchschnitte untersucht. Sie ist daher sehr nützlich, um Händlern dabei zu helfen, Ein- und Ausstiege besser zu timen.
Vor diesem Hintergrund untersuchen wir diesen Indikator auf der Basis von einzelnen Mustern, wie dies auch in früheren Artikeln dieser Reihe der Fall war, in denen wir jeweils einen bestimmten allgemeinen technischen Indikator behandelt haben. Wir haben uns das Ichimoku zuletzt in diesem Beitrag angesehen, für Leser, die neu sind, wo wir 11 Muster überprüft haben, und für diesen Artikel haben wir acht aufgereiht. Eine Überprüfung der Indikatoren nach einzelnen Mustern hat das Potenzial, bestimmte Aspekte sehr verbreiteter Indikatoren aufzudecken, die von einigen Händlern übersehen worden sein könnten und die es dennoch wert wären, in ihr Arsenal aufgenommen zu werden.
Aber vielleicht noch mehr als das: Sie werfen ein Schlaglicht auf das relative Gewicht und die Bedeutung aller Schlüsselmuster, die ein bestimmter Indikator zu bieten hat, indem sie die Fähigkeiten der Händler dahingehend schärfen, worauf sie sich konzentrieren und was sie ignorieren sollten. Wir neigen dazu, diese Artikel abzuschließen, indem wir die relative Gewichtung der einzelnen Muster optimieren. Obwohl es möglich ist, solche Ergebnisse in eine Live-Einsatzumgebung zu übertragen, würde ich es vorziehen, wenn die Gewichtung manuell von den Händlern für jedes Muster auf der Grundlage ihrer eigenen Erfahrungen festgelegt wird, auch wenn ihre optimierten Testergebnisse möglicherweise gegenseitig validiert werden.
Der beigefügte Code soll mit dem MQL5-Assistenten verwendet werden, um einen Expert Advisor zusammenzustellen, und es gibt Anleitungen hier und hier für neue Leser, wie man das erreicht. Dieser zusammengesetzte Expert Advisor kann jeweils nur mit einem Muster verwendet werden, wie in den früheren Einführungsartikeln zu diesen Indikatoren erwähnt wurde. Da jedes Muster von Null bis zur Gesamtzahl der Muster minus eins indiziert wird, was in unserem Fall sieben ergibt, können wir über einen Eingabeparameter mit der Bezeichnung m_patterns_usage steuern, welche Muster verwendet werden, und er wird von der übergeordneten Klasse an unsere nutzerdefinierte Signalklasse vererbt.
Um nur eines der verfügbaren Muster zu verwenden, müsste der eingestellte Index für diesen Eingabeparameter zwei Potenzen des Index des Musters betragen. Um also nur Muster pattern_0 zu verwenden, würde dieser Eingabe 2^0 zugewiesen werden, was 1 ist, während für Muster-5 nur 2^5 wäre, was 32 ergibt, und so weiter. Derselbe Eingabeparameter kann, wie oben erwähnt, die Mehrfachauswahl und -verwendung von Mustern ermöglichen, und das ist es, was wir im letzten Teil dieses Artikels in Angriff nehmen. Da es selbst für eine kleine Anzahl von Mustern, in unserem Fall 8, viele mögliche Kombinationen gibt, können die Leser verstehen, dass, wenn eine beliebige ganze Zahl, die nicht in der Reihe 2^0, 2^1,... 2^n ist, verwendet wird und sie kleiner ist als die Grenze des Maximalwertes des Eingabeparameters m_patterns_usage, dann bedeutet dieser Wert, dass mehr als ein Muster verwendet wird. Die Grenze für m_patterns_usage liegt in unserem Fall bei 255, da wir nur 8 Muster verwenden. Kommen wir zu den Mustern.
Das Aufwachen des Alligators (Überkreuzungssignal)
Dies ist vielleicht das wichtigste Muster des Alligator-Indikators und befasst sich erwartungsgemäß mit der interessantesten Phase der Alligator-Zyklen, dem Beginn der Schlemmerphase, die hier als das Erwachen bezeichnet wird. Das Signal basiert auf den Lippen, den Zähnen und dem Kiefer, wenn sie sich kreuzen, was auf eine mögliche Trend- oder Richtungsänderung hinweist.
Eine Aufwärtskreuzung liegt vor, wenn die grüne Lippen-Linie die rote Zahn- und die blaue Kiefer-Linie überschreitet; dies signalisiert häufig den Beginn eines Aufwärtstrends. Umgekehrt liegt eine Abwärtskreuzung vor, wenn die grüne Lippen-Linie unter der roten Zahn-Linie und der blauen Kiefer-Linie kreuzt, was auf den Beginn eines Abwärtstrends hinweist. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Lips(X() + 1) < Jaws(X() + 1) && Lips(X()) > Jaws(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Lips(X() + 1) > Jaws(X() + 1) && Lips(X()) < Jaws(X())) { return(true); } return(false); }
Dies markiert unser Muster pattern_0, und um Testläufe nur mit diesem Muster durchzuführen, muss unser Eingabeparameter m_patterns_usage auf 1 gesetzt werden. Wenn wir dies tun und versuchen, für einige der anderen Expert Advisor zu optimieren, um das Handelspotenzial dieses Musters zu demonstrieren, erhalten wir den folgenden Bericht von einigen der günstigen Ergebnisse:
Unsere Testeinstellungen hierfür sind USD CHF auf dem stündlichen Zeitrahmen für das Jahr 2023. Diese Ergebnisse beruhen hauptsächlich auf der Optimierung der Schwellenwertgewichtung des Musters sowie der Schwellenwerte für offene und geschlossene Bedingungen. Wir handeln mit schwebenden Aufträgen, haben ein Take-Profit-Preis, aber keinen Stop-Loss. Dies sind sicherlich keine idealen Bedingungen, aber sie dienen dem Zweck, patern_0 in Aktion zu demonstrieren.
Der Alligator frisst (Trendfolge)
Unser zweites Muster, pattern_1, befasst sich mit dem Kern des Alligator-Signals, bei dem die Lippen-, Zahn- und Kieferlinien aufeinander abgestimmt sind und sich in einer bestimmten Richtung zu einem bestimmten Trend auseinander bewegen. Dies ist das Fressstadium der Alligator-Zyklen, wobei das Fressen einer Aufwärtsphase definiert ist, wenn die grünen Lippen über den roten Zähnen sind, die sich über den blauen Kiefern befinden. Obwohl diese Linien alle nach oben zeigen, würden sie nicht nur wegen ihrer unterschiedlichen Mittelungszeiträume, sondern auch wegen ihrer unterschiedlichen Offsets divergieren. Wenn alle diese Merkmale erfüllt sind, deutet dies auf einen sehr starken Aufwärtstrend hin.
„Abwärts Fressen“ wird hingegen sichtbar, wenn die grünen Lippen unter den roten Zähnen liegen, die wiederum unter den blauen Kiefern liegen, wobei wiederum alle 3 SMAs in einem divergenten (nicht parallelen) Muster nach unten zeigen. Die Beobachtung all dieser Merkmale, wie bei der Hausse, würde ein starkes Abwärtssignal anzeigen. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_1(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Lips(X()) > Teeth(X()) && Teeth(X()) > Jaws(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Lips(X()) < Teeth(X()) && Teeth(X()) < Jaws(X())) { return(true); } return(false); }
Die Testergebnisse eines Optimierungsversuchs mit ähnlichen Einstellungen wie pattern_0 für das Devisenpaar USD CHF, 1-Stunden-Zeitrahmen, Jahr 2023, liefern uns folgende Ergebnisse:
Gator-Oszillator-Signale
Neben dem Alligator-Indikator ist Bill Williams auch für den Gator-Oszillator verantwortlich, bei dem es sich um eine Histogramm-Projektion in Form eines Oszillators der Differenzen zwischen den drei SMA-Puffern des Alligator-Indikators handelt. Der in MQL5 eingebaute Indikator für den Gator-Oszillator ist ein wenig fehlerhaft, weil der Gator-Oszillator von Natur aus unorthodox ist. Seine Ausgaben sind 4-fach, zwei reelle Werte und zweifarbige Werte. Da die dahinter stehenden Formeldefinitionen bekannt sind, implementieren wir diese in unserer nutzerdefinierten Signalklasse wie folgt:
// double Upper(int ind) { return(fabs(Jaws(ind) - Teeth(ind))); } color UpperColor(int ind) { return(Upper(ind) >= Upper(ind + 1) ? clrGreen : clrRed); } double Lower(int ind) { m_gator.Refresh(-1); return(-fabs(Teeth(ind) - Lips(ind))); } color LowerColor(int ind) { m_gator.Refresh(-1); return(fabs(Lower(ind)) >= fabs(Lower(ind + 1)) ? clrRed : clrGreen); } //
Dieses Muster, pattern_2, ist unser drittes Muster, und es kombiniert Signale des Gator-Oszillators, die wir aus unseren nutzerdefinierten Funktionen lesen, die vom Alligator-Indikator abgeleitet sind. Wenn sich die grünen Balken des Gator-Oszillators nach oben ausdehnen, deutet dies auf einen sich verstärkenden Trend hin. Umgekehrt ist ein offenes „abwärts Maul“ des Alligators zu erkennen, wenn sich die roten Balken nach unten ausdehnen, was auf einen sich verstärkenden Abwärtstrend hindeutet. Dementsprechend markieren gemischte rote und grüne Balken häufig eine Marktkonsolidierung oder eine Trendabschwächung. Wir implementieren pattern_2 in MQL5 wie folgt:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && UpperColor(X()) == clrGreen && LowerColor(X()) != clrRed) { return(true); } else if(T == POSITION_TYPE_SELL && LowerColor(X()) == clrRed && UpperColor(X()) != clrGreen) { return(true); } return(false); }
Testläufe aus einem günstigen Optimierungsstint ergeben folgenden Bericht:
Dies ist mit ähnlichen Testeinstellungen oben für das Symbol USD CHF, 1-Stunden-Zeitrahmen, Jahr-2023. Diese Ergebnisse sind nicht kreuzvalidiert und zeigen nur das Handelspotenzial des Musters pattern_2. Wir haben den Expert Advisor nur mit dem Muster pattern_2 getestet, indem wir dem Eingabeparameter m_patterns_usage den ganzzahligen Wert 4 zugewiesen haben, wie oben in der Einleitung erläutert.
Divergenz zwischen Kiefer und Lippen und zwischen Zähnen und Lippen
Dieses Muster ist unser viertes und wird als pattern_3 bezeichnet. Sie entsteht durch den Unterschied in der Richtung oder der Größe der Lücke zwischen den Kiefer und Lippen oder Zähne und Lippen. Eine Aufwärts-Divergenz liegt vor, wenn sich die Lippen (grüne Linie) nach einer Periode des Hin und Her von den Zähnen (rote Linie) und dem Kiefer (blaue Linie) zu entfernen beginnen. Dies dient im Wesentlichen als Frühindikator für einen potenziellen Aufwärtstrend. Umgekehrt ist eine Abwärts-Divergenz gegeben, wenn sich die Lippen vom Kiefer und den Zähnen abwärts bewegen, was oft auf eine Marktflaute hindeutet. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Lips(X()) - fmax(Teeth(X()), Jaws(X())) > Lips(X() + 1) - fmax(Teeth(X() + 1), Jaws(X() + 1))) { return(true); } else if(T == POSITION_TYPE_SELL && fmin(Teeth(X()), Jaws(X())) - Lips(X()) > fmin(Teeth(X() + 1), Jaws(X() + 1)) - Lips(X() + 1)) { return(true); } return(false); }
Ein Test mit identischen Einstellungen, wie sie in allen oben erwähnten Mustern verwendet wurden, führt zu den folgenden Ergebnissen, wobei einige der günstigen Einstellungen aus einer kurzen Optimierungsphase stammen:
Alligator erwacht nach dem Schlaf
pattern_4, unser fünftes, soll sich nach einer beträchtlichen Zeit der Konsolidierung entfalten oder der Alligator schläft. Dies ist dadurch gekennzeichnet, dass die Lippen, Zähne und Kiefer beginnen, sich zu lösen. Für die Handelsstrategie ist es daher ein Aufwärtssignal, wenn nach einer langen Periode des Alligatorschlafs die Lippen, Zähne und Kiefer beginnen, nach oben zu divergieren, was ein Zeichen für einen Ausbruch nach oben sein könnte. Auf der anderen Seite ist es ein Abwärtssignal, wenn dieselben 3 Linien nach einer längeren Zeit der Konvergenz beginnen, nach unten zu divergieren, was auf einen Ausbruch nach unten hindeuten könnte. Wir implementieren dies wie folgt in MQL5:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_4(ENUM_POSITION_TYPE T) { if(Range(X() + 3) <= Spread(X() + 3) && Range(X() + 8) <= Spread(X() + 8)) { if(T == POSITION_TYPE_BUY && Lips(X()) > Lips(X() + 3) && Teeth(X()) > Teeth(X() + 3) && Jaws(X()) > Jaws(X() + 3)) { return(true); } else if(T == POSITION_TYPE_SELL && Lips(X()) < Lips(X() + 3) && Teeth(X()) < Teeth(X() + 3) && Jaws(X()) < Jaws(X() + 3)) { return(true); } } return(false); }
Wenn wir nur dieses Muster mit ähnlichen Symbol- und Zeitrahmeneinstellungen wie oben mit den anderen Mustern testen und dem Parameter m_patterns_usage den Wert 16 zuweisen, erhalten wir die folgenden Ergebnisse:
Bestätigung des Ausbruchs
Unser Muster pattern_5 entwickelt sein Signal aus Kursbewegungen in dieselbe Richtung wie die Alligator-Linien, mit einer Fortsetzung, die kein starkes Retracement aufweist. Bei diesem Muster liegt ein Ausbruch nach oben vor, wenn der Kurs über den Alligator-Linien liegt und alle drei Linien aufwärts gerichtet sind, was auf eine Fortsetzung der Kaufposition hindeutet. Sie ist nicht durch eine größere Preisänderung als solche gekennzeichnet. Ein Ausbruch nach unten liegt vor, wenn der Kurs unter den Alligator-Linien liegt und alle drei Linien abwärts tendieren, was ein Zeichen für weitere Verkäufe wäre. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X()) > Lips(X()) && Lips(X()) > Lips(X() + 3) && Teeth(X()) > Teeth(X() + 3) && Jaws(X()) > Jaws(X() + 3)) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) < Lips(X()) && Lips(X()) < Lips(X() + 3) && Teeth(X()) < Teeth(X() + 3) && Jaws(X()) < Jaws(X() + 3)) { return(true); } return(false); }
Um mit dem assistentengestützten Expert Advisor zu handeln und dabei nur dieses Muster zu verwenden, müssten wir dem Eingabeparameter m_patterns_usage den Wert 32 zuweisen. Von den Eingängen wird dieser Parameter, der von der übergeordneten Klasse unserer nutzerdefinierten Signalklasse abgeleitet wird, als „Pattern‘s Used Bitmap“ bezeichnet. Testläufe mit günstigen Eingabeeinstellungen aus einer Schnelloptimierung, die ähnliche Einstellungen wie die oben erwähnten Muster verwendet, ergeben folgenden Bericht:
Volatilitätssignale
Dieses Bonusmuster ist zwar nicht formal kodiert und getestet wie die anderen, kann aber definiert werden, wenn man die vorherrschenden Preistrends mit dem/den Alligator-Bereich(en) paart. Die Hauptthese dahinter ist die gesamte Spanne des Alligators, die wir in der folgenden Funktion definieren;
double Range(int ind) { return(fmax(fmax(Jaws(ind), Teeth(ind)), Lips(ind)) - fmin(fmin(Jaws(ind), Teeth(ind)), Lips(ind))); }
Sie ist ein Proxy für die Volatilität. Eine hohe Volatilität liegt also vor, wenn Kiefer, Zähne und Lippen weit auseinander stehen, was darauf hindeutet, dass der vorherrschende Trend sehr stark und gefestigt ist. Eine Überprüfung des vorherrschenden Preistrends würde helfen festzustellen, ob ein Aufwärtssignal (steigende Preise) oder ein Abwärtssignal (fallende Preise) abgeleitet werden sollte. Eine niedrige Volatilität hingegen würde nicht unbedingt ein Signal darstellen; sie könnte jedoch genutzt werden, um den Zeitpunkt für den Ausstieg aus offenen Positionen zu bestimmen. Dies ist jedoch nur dann der Fall, wenn die drei SMA-Puffer nahe beieinander liegen, was häufig auf eine begrenzte Handelsspanne hindeutet und in der Regel auch als Vorsichtsmaßnahme genutzt wird, um den Einstieg in die Märkte abzuwarten. Für offene Positionen könnte dies jedoch eine Gelegenheit zum Ausstieg sein, und wenn der Preistrend intakt ist, könnte der jüngste Rückgang der Volatilität die Eröffnung umgekehrter Positionen implizieren. In diesem Sinne könnte ein Aufwärtstrend bei abnehmender bis geringer Volatilität ein Abwärtssignal darstellen, ebenso wie ein Abwärtstrend unter ähnlichen Bedingungen ein grünes Licht für einen Aufwärtstrend bedeuten könnte. Dieses Muster wäre wohl weniger sicher als die anderen, und daher sollten Leser, die es kodieren und implementieren möchten, es vielleicht mit anderen Signalen kombinieren.
Das Retracement-Signal der Alligator-Lippen
Muster pattern_6 ist das siebte, bei dem sich die Lippen in Richtung Zähne oder Kiefer zurückziehen, ohne sich vollständig zu kreuzen. Die Handelsstrategie mit diesem Muster, ein Aufwärts-Retracement, ist, wenn die Lippen-Linie sich sich in Richtung der Zähne und Kiefer bewegt, aber dann wieder ohne zu kreuzen sich wieder nach oben bewegt, was auf eine potenzielle Fortsetzung des Aufwärtstrends deutet. Und wie erwartet, wäre ein Abwärts-Retracement, wenn sich die Lippen in Richtung der Zähne und Kiefer bewegen, abprallen, sich nicht kreuzen und so eine mögliche Fortsetzung des Abwärtstrends einleiten. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Lips(X()) > Lips(X()+1) && Lips(X()+1) < Lips(X()+2) && Lips(X()) > Teeth(X()) && Lips(X()+1) > Teeth(X()+1) && Teeth(X()) > Jaws(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Lips(X()) < Lips(X()+1) && Lips(X()+1) > Lips(X()+2) && Lips(X()) < Teeth(X()) && Lips(X()+1) < Teeth(X()+1) && Teeth(X()) < Jaws(X())) { return(true); } return(false); }
Um den Expert Advisor nur mit Muster pattern_6 zu verwenden, würde man dem Eingabeparameter „Patterns-Used-Bitmap“ den ganzzahligen Wert 64 zuweisen, der 2 hoch 6, dem Index unseres Musters, entspricht. Wenn wir unseren Experten nur mit diesem Muster optimieren, erhalten wir bei einer der günstigen Eingabeeinstellungen den unten stehenden Bericht:
Wie bereits erwähnt, ist dies nicht kreuzvalidiert, sondern wird hier nur gezeigt, um das Handelspotenzial/ die Fähigkeit für Muster pattern_6 zu demonstrieren.
Prävention vor falschen Ausbrüchen
Unser letztes Muster, pattern_7, ergibt sich aus der Beobachtung der Kiefer, Zähne und Lippen des Alligators, um zu sehen, ob sie inmitten eines Marktausbruchs ausgerichtet bleiben. Das Ziel ist die Vermeidung von falschen Ausbrüchen. Die Handelsstrategie besteht also darin, dass ein falsches Ausbruch (Fake-Out) nach oben registriert wird, wenn es zu einem Aufwärtsausbruch kommt, aber die Alligator-Linien nicht signifikant divergieren, was auf einen Fake hindeuten könnte, da der Markt umkehren und somit wieder fallen könnte. Umgekehrt gilt es als falscher Ausbruchs nach unten, wenn die Alligator-Linien bei einem gespiegelten Kursausbruch nach unten dicht beieinander bleiben, was in der Regel bedeutet, dass Händler ihre Verkaufspositionen loswerden sollten. Diese Fake-Outs implizieren in gewisser Weise Signale für ihr Gegenteil, und zu diesem Zweck implementieren wir dieses Muster in MQL5 wie folgt:
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalAlligator::IsPattern_7(ENUM_POSITION_TYPE T) { if(Range(X()) <= Spread(X())) { if(T == POSITION_TYPE_BUY && Close(X()) < fmin(fmin(Jaws(X()), Teeth(X())), Lips(X())) && Close(X()+1) > fmin(fmin(Jaws(X()+1), Teeth(X()+1)), Lips(X()+1))) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) > fmax(fmax(Jaws(X()), Teeth(X())), Lips(X())) && Close(X()+1) < fmax(fmax(Jaws(X()+1), Teeth(X()+1)), Lips(X()+1))) { return(true); } } return(false); }
Die Verwendung dieses Musters mit unserem Expert Advisor erfordert, dass den verwendeten Mustern die ganze Zahl 128 zugewiesen wird. Wenn wir dies tun und mit ähnlichen Einstellungen wie bei den anderen Mustern des Symbols USD CHF, des Zeitrahmens 1 Stunde und der Testperiode 2023 optimieren, erhalten wir den folgenden Bericht, wenn wir einige der empfohlenen Eingabeeinstellungen verwenden:
Kombinieren aller Muster
Die Kombination und potenzielle Verwendung aller Muster im Expert Advisor wirft die Frage auf, ob dies sinnvoll ist oder ob sich die Händler auf ein einziges Muster beschränken sollten. Ich habe davor gewarnt, optimierte Gewichtungen für verschiedene Muster in Live-Konten zu verwenden, da es meiner Meinung nach am besten ist, wenn die Gewichtung als Konstante vom Händler auf der Grundlage seiner eigenen Erfahrung mit dem jeweiligen Indikator festgelegt wird. Es gibt jedoch noch weitere Punkte, die in diesem Diskurs zu berücksichtigen sind.
Zunächst einmal geht es um das Argument des Kontextbewusstseins gegenüber der Einfachheit. Wenn dieser Indikator, der Alligator, für Sie relativ neu ist, könnte man argumentieren, dass die Verfolgung mehrerer Muster ein differenzierteres Verständnis des gesamten Marktzyklus in Bezug auf den Alligator ermöglicht, was in diesem Fall bedeutet: Konsolidierung, Trendbeginn, Trendfortsetzung und Trendende. Dies könnte Aufschluss über subtile Verschiebungen in den Phasen beim Übergang geben, ganz zu schweigen von dem wahrscheinlichen Risiko-Rendite-Profil jeder Phase.
Die Beobachtung und Gewinnung dieser Informationen wäre wahrscheinlich in einem manuellen Handel ideal, was wir mit diesen Serien nicht unbedingt ausnutzen wollen. Das Argument der Einfachheit beruht jedoch auf der Tatsache, dass die Konzentration auf nur ein Muster, wie die „Fressphase“ eines Trends, die Entscheidungsfindung vereinfacht. Und beim manuellen Handel kann dies ein entscheidendes Argument sein. Da wir jedoch beabsichtigen, einen Expert Advisor zu verwenden, ist dies kein großes Problem, vor allem wenn man bedenkt, dass selbst die damit verbundenen Rechen- und Speicheraufwand verschwindend gering sind.
Zusammenfassend lässt sich also sagen, dass der Ansatz mit mehreren Mustern für die Erkundung und das Lernen geeignet ist und dass der fokussierte Weg geeignet ist, sobald die Händler wissen, was funktioniert, wie und warum. Ungeachtet dieser Argumente und Vorsichtsmaßnahmen optimieren wir die verschiedenen Muster, um herauszufinden, welche relative Gewichtung am besten funktioniert, wenn sie alle kombiniert werden. Da wir mehrere Muster verwenden wollen, wird die Eingabe „Pattern's Used Bitmap“ im Bereich von 0 bis 255 optimiert. Die Ergebnisse einiger günstiger Eingangsparameter aus dieser Optimierung geben uns folgenden Bericht:
Wie bei allen Mustern, die wir oben auf individueller Basis getestet haben, verwenden wir auch hier den 1-Stunden-Zeitrahmen für das Jahr 2023 für das Symbol USD CHF.
Schlussfolgerung
Wir haben einen anderen Indikator, den Alligator von Bill Williams, in einer nutzerdefinierten Signalklasse auf der Basis von einzelnen Mustern untersucht, um ein Gefühl für die relative Bedeutung jedes Musters zu bekommen und auch eine Meinung darüber zu bekommen, ob die kombinierte Verwendung aller Muster fruchtbarer ist als die Verwendung jedes einzelnen Musters nach dem Argument „die Summe größer ist als die Teile“. In diesem Fall deutet unsere Reihe von Testberichten zwar darauf hin, dass „weniger mehr ist“, wenn man bedenkt, dass der Bericht bei der Kombination aller Muster nicht sehr überzeugend ausfiel, aber es müssen umfangreiche Tests über längere Zeiträume durchgeführt werden, die über unser Testfenster, das Jahr 2023, hinausgehen, bevor endgültige Schlussfolgerungen gezogen werden können.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/16329





- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.