
MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 50): Der Awesome Oszillator
Einführung
Der Awesome Oszillator ist ein weiterer Indikator, der von dem legendären Investor Bill Williams entwickelt wurde, neben dem Alligator, den wir im letzten Artikel über Indikatormuster betrachtet haben. Im Prinzip soll er die Marktdynamik messen und dabei helfen, potenzielle Veränderungen der vorherrschenden Trends zu erkennen. Der Awesome Oscillator (AO) basiert auf der Differenz zwischen einem einfachen gleitenden 34-Perioden-Durchschnitt (SMA) und einem 5-Perioden-SMA, wobei beide auf den Medianpreis angewendet werden. Der Medianpreis ist gegeben durch:
(Hoch + Tief) / 2
Die AO wird als oszillierendes Histogramm oberhalb und unterhalb der Nulllinie angezeigt. Die Nulllinie dient als Markierung für fehlende Dynamik, wobei ein Über- oder Unterschreiten auf eine potenzielle Trendwende hindeutet. Die grünen Balken des Histogramms stehen für das zunehmende Aufwärtsmomentum des vorherigen Kursbalkens, während die roten Balken das zunehmende Abwärtsmomentum des vorherigen Balkens anzeigen. Wenn die Histogrammbalken oberhalb der Nulllinie liegen, deutet dies häufig auf einen Aufwärtstrend hin, während die gleichen Histogrammbalken (wiederum unabhängig von der Farbe) auf der anderen Seite der Nulllinie gespiegelt werden, was auf ein vorherrschendes Abwärtsmomentum schließen lässt.
Warum der Name „Awesome“ (fantastisch)? Nun, es gibt weder eine präzise Antwort noch eine maßgebliche Quelle, an die man die Frage richten könnte; es wird jedoch behauptet, dass AO komplizierte Impulsberechnungen zu einem einfachen visuellen Indikator vereinfacht. Durch den doppelten Fokus auf schnelle und „langfristige“ SMAs erhalten Händler ein relatives Gefühl für die kurzfristige und langfristige Marktdynamik. Er ist sehr vielseitig und eignet sich gut für Trendfolge- und Umkehrstrategien. In der Praxis wird er vor allem eingesetzt, um den Handel mit der vorherrschenden Marktdynamik in Einklang zu bringen. Sie kann potenzielle Einstiegs- und Ausstiegspunkte liefern, wie wir weiter unten mit einer Vielzahl von Signalmustern behandeln, und sie kann auch bei der Divergenzanalyse nützlich sein, die wir auch bei den Signalmustern nutzen, die wir weiter unten besprechen.
Trotz der vielen Signalmuster und Verwendungsmöglichkeiten hat es auch einige inhärente Grenzen. Wie viele andere Oszillatoren kann auch der AO bei schwankenden oder unruhigen Märkten falsche Signale erzeugen, was leider bedeutet, dass er am besten mit anderen Indikatoren kombiniert werden sollte, um eine breitere und umfassendere Strategie zu entwickeln.
Nach dieser kurzen Einführung wollen wir nun, wie es unsere Tradition vorsieht, einige Muster der AO besprechen. In diesem Artikel befassen wir uns mit 9 verschiedenen Mustern mit den Indizes 0 bis 8. Wie immer werden wir jedes Muster einzeln besprechen und testen, bevor wir mit einem Test mit mehr Mustern abschließen, den ich nicht in Live-Konto-Umgebungen einführen möchte, es sei denn, der Händler ist sich der relativen Gewichtung der Muster aufgrund seiner eigenen Erfahrungen sehr sicher. Um ein Muster nach dem anderen zu testen, müssen wir den Eingabeparameter m_inputs oder „Patterns Used Bitmap“ einem bestimmten Index zuordnen. Wenn wir nur das Muster 0 testen wollen, wird dieser Index 2 hoch 0 sein. Bei einem Muster 4 ist der Index 2 hoch 4 und so weiter.
Der beigefügte Code soll vom dem MQL5-Assistenten verwendet werden und hat daher ein Format, das dieses Zusammensetzen einfach macht. Für neue Leser gibt es hier und hier Anleitungen, wie man das macht. In dieser Serie geht es darum, die Vorteile dieses MQL5-Assistenten zu nutzen, vor allem das schnelle Testen und Prototyping neuer Ideen. Die Notwendigkeit, alles von Grund auf neu zu programmieren, ist ein offensichtlicher Vorteil. Was jedoch übersehen werden könnte, ist die Standard-Testplattform, die sich bietet, wenn mehrere Ideen getestet werden, die entscheidend sein können, um ein Gefühl dafür zu bekommen, was für die eigene Strategie und den eigenen Ansatz an den Märkten wirklich wichtig ist. Steigen wir ein.
Kreuzen der Nulllinie
Unser erstes Muster mit dem Index 0 ist wahrscheinlich das häufigste Muster für diesen Indikator, und zwar der Nulldurchgang. Definitionsgemäß stellt die Nulllinie in der AO einen neutralen Impulszustand dar, d. h. der Übergang des Histogramms über oder unter diese Linie bedeutet eine Impulsverschiebung. Es ist ganz einfach: Ein Kreuzen aufwärts wird markiert, wenn die AO von unterhalb der Nulllinie nach oben kreuzt und damit eine Kaufgelegenheit bietet, während ein Abwärtskreuz vorliegt, wenn die AO diese Nulllinie von oben nach unten kreuzt. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 1) < 0.0 && AO(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 1) > 0.0 && AO(X()) < 0.0) { return(true); } return(false); }
Bei diesem Muster ist besonders hervorzuheben, dass das Kreuzen der Nulllinie je nach Richtung des Kreuzens eine Verschiebung des Momentums von abwärts zu aufwärts oder umgekehrt bedeutet. Dies hat das Potenzial, als Frühindikator für Trendänderungen für den Händler zu dienen. Aus dem letztgenannten Punkt ergibt sich auch die Notwendigkeit, das Kreuzen dieser Linie durch alternative Indikatoren wie Trendlinien usw. bestätigen zu lassen. Die Balken des Histogramms dieses Oszillators haben auch ihre Höhe und Steilheit um die Nulllinie als Indikator für die Stärke des Momentums, wobei höhere Balken ein stärkeres Momentum anzeigen, was bedeutet, dass allmähliche Überschreitungen (oder Überschreitungen mit kürzeren Balken) oft schwächere Signale anzeigen als Überschreitungen mit höheren Balken.
Wie immer kommt es auf den Kontext an, daher sind die allmählichen Überschreitungen in einem steigenden Umfeld nicht unbedingt ein schwaches Signal, ebenso wie Überschreitungen mit großformatigen Histogrammen in einem unruhigen Markt nicht unbedingt ein starkes Signal darstellen. Dieser Oszillator kann als Leitfaden für ein Einstiegssignal dienen, und das ist unsere Hauptanwendung in diesem Artikel. Da wir jedoch Schwellenwerte für Kauf- und Verkaufs-Bedingungen sowohl für die Eröffnung als auch für die Schließung verwenden, nutzen die Signalklassen der assistentengestützten Expert Advisors von Natur aus auch das Ausstiegspotenzial jedes angewandten/ausgewählten Signals.
Die grundlegenden Vorteile von Muster-0 (Pattern_0)sind die einfache Interpretation, die Skalierbarkeit, da dieser Oszillator über mehrere Zeitrahmen von Intraday- bis zu langfristigen Charts eingesetzt werden kann, und er kann als Frühwarnsystem für potenzielle Trendumkehrungen dienen. Sein Nachteil ist die Verzögerung, da er auf gleitenden Durchschnitten basiert und das Signal bei sich schnell bewegenden Märkten verzögern kann. Falsche Signale können auch bei sich konsolidierenden Märkten oder bei kleineren Korrekturen innerhalb eines vorherrschenden Trends auftreten. Schließlich ist, wie bereits erwähnt, die Bestätigung ihrer Signale eine gute Praxis, und das bedeutet, dass sie zumindest unabhängig davon kein sehr starkes Signal ist. Nachfolgend werden die Testergebnisse mit Eingabeeinstellungen aus einer kurzen Optimierungsphase mit GBP JPY für das Jahr 2022 auf dem 4-Stunden-Zeitrahmen dargestellt:
Twin Peaks Signal
Unser zweites Muster, Muster-1, ist das Twin-Peaks-Signal. Während es beim manuellen Handel relativ einfach zu interpretieren ist, ist die Implementierung des automatisierten Handels oder die Umsetzung in ein nutzerdefiniertes Signal etwas komplizierter. Zur Definition: Twin Peaks (Doppenspitzen) treten auf, wenn sich zwei Spitzen auf derselben Seite der Nulllinie bilden, entweder oberhalb in einem Aufwärtstrend oder unterhalb in einem Abwärtstrend, wobei die zweite Spitze näher an der Nulllinie liegt. Eine wichtige Regel für Muster-1 ist, dass die Nulllinie zwischen den beiden Spitzenwerten nicht durchbrochen werden darf.
Unsere Aufwärtssignale oder Aufwärts-Twin Peaks liegen vor, wenn beide Spitzen unterhalb der Nulllinie liegen, wobei die jüngste Spitze näher an der Nulllinie liegt, und umgekehrt liegen die Abwärts-Spitzen vor, wenn beide Spitzen oberhalb der Nulllinie liegen, wobei die jüngste Spitze näher an der Nulllinie liegt. Bei dem beschriebenen Muster muss die Höhe des Histogramms zwischen den Spitzen abnehmen, um einen Schwungverlust des vorherigen Trends widerzuspiegeln (der Trend steht kurz vor der Umkehrung). Die Nulllinie dient auch als Grenze, wobei ein Überschreiten der Nulllinie vor der Bildung der beiden Spitzen das Signal ungültig macht, wobei auch ein zu nahes Aufeinandertreffen der Spitzen das Signal ungültig macht. Unsere Implementierung prüft letzteres nicht, und die Leser können dies selbständig implementieren, aber unser Quelltext ist unten aufgeführt:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_1(ENUM_POSITION_TYPE T) { bool _1 = false; int _i = X(); if(T == POSITION_TYPE_BUY && AO(_i) < 0.0 && LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { while(AO(_i) < 0.0) { _i++; if(LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) >= 0.0) { break; } } } else if(T == POSITION_TYPE_SELL && AO(_i) > 0.0 && UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { while(AO(_i) > 0.0) { _i++; if(UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) <= 0.0) { break; } } } return(_1); }
Muster-1 ist von Bedeutung, da es häufig auf eine vorherrschende Divergenz zwischen Momentum und Kursentwicklung hinweist, die als Frühwarnung vor Umkehrungen dient. Die Fähigkeit, Umkehrungen aufzufangen, ist wahrscheinlich die Stärke von Muster-1. Die genauen Einstiegspunkte bei den Mustern von „Twin Peaks“ können genau dann vorliegen, wenn sich der zweite Peak, der näher an der Nulllinie liegt, gebildet hat, und genau das haben wir in unserer obigen Quelle implementiert; ein alternativer, „sichererer“ Ansatz könnte jedoch sein, nachdem der Oszillator die Nulllinie nach der Bildung der beiden Peaks durchquert hat.
Muster-1 kann auch bei der Platzierung des Stop-Loss hilfreich sein. Anstatt traditionell einen Preis-Stop-Loss zu platzieren, nachdem die Position bei der Bildung dieses Musters eröffnet wurde, wird die Position geschlossen, wenn der Oszillator den höheren der beiden Peaks (d. h. den ersten Peak) wieder erreicht. Wir setzen dies nicht um, aber es ist etwas, das der Leser herausfinden kann. Darüber hinaus könnte dieses Muster erweitert werden, um Gewinnziele festzulegen, wobei die Position, die bei der Registrierung des zweiten kleineren Peaks eröffnet wurde, geschlossen wird, wenn sie im Gewinn ist, sobald die Nulllinie vom Oszillator überschritten wird. Dieser letzte Ansatz eignet sich am besten für größere Zeitrahmen, da bei kleineren Zeitrahmen die Nulllinie überschritten werden könnte, wenn der Kurs noch innerhalb der Spanne liegt.
Dieses Muster ist zwar seltener und daher wohl auch sicherer als Muster-0, kann aber dennoch mit Trendlinien gepaart werden; mit der Volumenanalyse, wenn Volumendaten verfügbar sind, bei denen ein höheres Volumen auf dem zweiten kleineren Peak als eindeutige Bestätigung des Signals dienen kann; und mit Divergenzwerkzeugen in Form von MACD oder RSI, wo Divergenz zusätzliches Vertrauen für das angezeigte Signal schaffen kann. Zu seinen Vorteilen gehören die Tatsache, dass er im Vergleich zu dem Kreuzen von SMA-Linien oder Muster-0 nicht verzögert ist, die Richtungsgenauigkeit, da er nicht nur den nächsten Trend aufzeigt, sondern dies auch durch die Hervorhebung vorherrschender Momentum-Schwächen mit dem aktuellen Trend untermauert, und natürlich seine Skalierbarkeit über verschiedene Zeitrahmen und Märkte. Ein Test mit optimierten Einstellungen für GBP JPY für das Jahr 2022 auf dem 4-Stunden-Zeitrahmen zeigt folgende Ergebnisse:
Die Grenzen von Muster-1 ergeben sich aus seiner Komplexität, insbesondere wenn es um die Umsetzung in Code geht. Wie bereits erwähnt, ist es relativ einfach, dieses Muster aus einem Kurschart abzuleiten, aber es von einem Expert Advisor aus einem Kurspuffer interpretieren zu lassen, ist nicht dasselbe. In unruhigen oder unentschlossenen Marktumgebungen kann es bei diesem Muster auch zu zahlreichen Fehlsignalen kommen. Die Verwendung von Bestätigungen mit den bereits erwähnten Instrumenten oder sogar Kerzenmustern kann hier Abhilfe schaffen.
Einstellung der „Untertasse“
Das Untertassenmuster, unser Muster-2, ist ein weiteres AO-Signalmuster, das durch das Lesen der Farbe der Oszillator-Histogrammbalken hilft, potenzielle Umkehrungen zu erkennen. Das Untertassen-Setup eines Aufwärtstrends deutet auf eine potenzielle Aufwärtsumkehr der Marktdynamik hin, die durch zwei aufeinander folgende rote Histogrammbalken gekennzeichnet ist, wobei der zweite Histogrammbalken eine geringere Größe als der vorherige aufweist und der dritte Balken, der auf diese beiden folgt, grün und höher als der zweite kurze rote Balken ist. Diese Balken müssen alle über der Nulllinie liegen, und das Einstiegssignal erfolgt häufig beim Abschluss des grünen Balkens.
Das Untertassen-Setup eines Abwärtstrends ist, wie zu erwarten, die Umkehrung des Aufwärtstrends, bei dem wir 2 aufeinanderfolgende grüne Balken haben, wobei der zweite näher an der Nulllinie liegt (oder kürzer ist) und der dritte Balken rot und höher als der zweite, kürzere grüne Balken ist. Alle diese Balken würden von der Aufwärts-Untertasse umgedreht werden und unter der Nulllinie liegen, und das Einstiegssignal wäre, wie wir es beim Abwärtstrends gesehen haben, beim Abschluss des roten Balkens. Der Schlüssel zu diesem Muster liegt darin, dass es eher von Momentumverschiebungen als von der reinen Preisaktion abhängt, und das macht es in der Regel effektiv, um kurzfristige Trendumkehrungen zu identifizieren oder die Stärke größerer Trends zu bestätigen. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && UpperColor(X() + 2) == clrRed && UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && LowerColor(X() + 2) == clrGreen && LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed) { return(true); } return(false); }
Die Hauptvorteile dieses Musters sind, dass es einfach zu erkennen und zu interpretieren ist, dass es zusammen mit anderen gängigen Indikatoren verwendet werden kann, um die Signalgenauigkeit zu verbessern, und dass es in der Regel relativ gut mit volatilen Märkten zurechtkommt; ein Umfeld, in dem Momentumänderungen recht häufig vorkommen können. Zu den Einschränkungen gehört eine geringere Genauigkeit bei nicht trendabhängigen Einstellungen mit geringer Volatilität, bei denen es besser wäre, ihn mit einem zusätzlichen Indikator zu kombinieren. Ein Testlauf mit günstigen optimierten Input-Einstellungen mit GBP JPY über 2022 auf der 4-Stunden-Linie ergibt folgendes:
Divergenz zwischen Preis und AO
Unser Muster-3 basiert auf Divergenz. Und was ist Divergenz? Einfach eine Abweichung zwischen einem Indikatorwert und der Kursentwicklung, die oft eine potenzielle Umkehr oder Abschwächung des vorherrschenden Trends signalisiert. Bei diesem Muster konzentrieren wir uns jedoch eher auf die Divergenz zwischen den Höchst- und Tiefstständen des Preises und den Höchst- und Tiefstständen des AO-Oszillators. In diesem Artikel untersuchen wir jedoch eine einfachere Form der Divergenz, nämlich die Trends der Höchst-/Tiefstkurse und der AO-Histogrammwerte.
Eine Aufwärts-Divergenz tritt auf, wenn der Kurs tiefere Tiefststände bildet, der AO-Oszillator jedoch höhere Höchststände aufweist. Die diesem Muster zugrunde liegende These besagt, dass ein nachlassendes Abwärtsmomentum angedeutet wird und daher eine Trendumkehr nach oben möglich ist. Ein mögliches, geschärftes Einstiegssignal könnte darin bestehen, dieses Muster aufzugreifen, wenn AO unter der Nulllinie liegt, und abzuwarten, bis es die Nulllinie überschreitet, um eine Kaufposition einzugehen.
Umgekehrt tritt eine Abwärts-Divergenz auf, wenn der Kurs höhere Höchststände erreicht, der AO-Oszillator jedoch niedrigere Tiefststände aufweist, was auf ein nachlassendes Aufwärts-Momentum trotz der Kursentwicklung hinweist. Dies würde eine Trendumkehr nach unten bedeuten, und ein geeigneter Einstiegspunkt für eine Verkaufsposition könnte sein, wenn die AO unter die Nulllinie fällt oder ein rückläufiges Muster eines sekundären Indikators bestätigt wird. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 3) > Low(X()) && AO(X() + 3) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 3) < High(X()) && AO(X() + 3) > AO(X())) { return(true); } return(false); }
Die Hauptmerkmale dieses Musters bestehen darin, dass es die Aufmerksamkeit auf Veränderungen im Momentum lenkt, die häufig Kursumkehrungen vorausgehen, insbesondere bei überkauften oder überverkauften Kursniveaus. Er ist daher eher für die Identifizierung potenzieller Umkehrungen als für Kursfortsetzungen konzipiert. Ein Testlauf mit den idealen Einstellungen aus der Optimierung desselben Symbols und den Einstellungen, die wir mit den obigen Mustern verwendet haben, liefert uns den folgenden Bericht:
Seine Vorteile unterscheiden sich nicht wesentlich von den bereits betrachteten Mustern, da er dazu beiträgt, frühe Trendwechsel zu antizipieren, bevor sie eintreten, vielseitig auf verschiedenen Märkten und Zeitrahmen einsetzbar ist und bei der Bestätigung von Ausbruchssignalen mit anderen Indikatoren kombiniert werden kann. Auch seine Nachteile sind nicht sehr unterschiedlich, da er in seitwärts tendierenden Märkten eher unzuverlässig ist, oft eine Bestätigung durch die Kopplung mit einem anderen Indikator erfordert und außerdem ein Nachzügler ist.
Filtern von falschen Ausbrüchen
In unserem Muster-4 geht es um falsche Ausbrüche. Falsche Ausbrüche liegen vor, wenn der Kurs eine wichtige Unterstützungs-/Widerstandsebene zu durchbrechen scheint, dann aber eine Richtungsumkehr vollzieht, wohl weil es ihm nicht gelungen ist, den Schwung aufrechtzuerhalten, der ihn über die ursprünglich durchbrochene Barriere hinausgeführt hat. Das Herausfiltern dieser falschen Ausbrüche kann daher zumindest auf dem Papier die Handelsgenauigkeit verbessern, wenn man davon ausgeht, dass das Momentum ein Schlüsselkriterium für die Nachhaltigkeit eines Durchbruchs ist.
Wie in der Einleitung dargestellt, misst die AO das Momentum durch den Vergleich eines kurzfristigen SMA (5-Periode) mit einem langfristigen SMA (34-Periode) bei Anwendung des Medianpreises. Durch die Analyse der AO-Werte bei einem Ausbruch können Händler daher feststellen, ob dieser ausreichend durch das Momentum oder eine Lücke zwischen der 5-Perioden-Kursentwicklung und der 34-Perioden-Kursentwicklung unterstützt wird. Wir implementieren Muster-4 in MQL5 wie folgt:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < MA(X() + 1) && Close(X()) > MA(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > MA(X() + 1) && Close(X()) < MA(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
Aus unserer Quelle erkennen wir einen Ausbruch als Kreuzen des gleitenden Durchschnitts mit der Periodenlänge 8. Dieser gleitende Durchschnittszeitraum hätte vielleicht länger sein sollen, wahrscheinlich 34? Um die Unterstützungs-/Widerstandsbarriere aussagekräftiger zu machen, reichte dieser kurze Zeitraum für unsere Testzwecke jedoch aus. Alternative Ansätze zur Identifizierung des Ausbruchs sind Trendlinien oder Chartmuster wie Dreiecke oder Rechtecke. Jeder Kursanstieg über die von diesen Indikatoren definierten Niveaus hinaus würde eindeutig einen Ausbruch markieren.
Eine weitere Analyse der AO am Ausbruchspunkt kann Aufschluss darüber geben, ob der aktuelle Ausbruch nachhaltig ist. Wenn die Größe des Histogramms (Größe des Oszillator-Balkendiagramms) bei einem Ausbruch signifikant ist, könnte es sich um ein profitables Signal handeln, jedoch erfordern kurze oder nicht eindeutige Histogramme oft eine weitere Bestätigung, bevor ein Signal in Angriff genommen werden kann. Diese Bestätigung ist möglich, wenn die AO die Nulllinie durchbricht oder wenn das Histogramm bereits in der Hälfte liegt, die auf einen Trend des vorherrschenden Signals hindeutet, dann müssen längere oder ähnlich gefärbte Histogrammbalken der AO zu sehen sein, bevor eine Position eröffnet wird.
Für die Signaldefinitionen gilt, dass ein Aufwärtsdurchbruch vorliegt, wenn der Kurs den gleitenden Durchschnitt von unten nach oben durchbricht und darüber schließt, wenn der AO über der Nulllinie liegt und die letzten beiden Balken grün sind. Auf der anderen Seite liegt ein Ausbruch nach unten vor, wenn der Kurs den gleitenden Durchschnitt von oben nach unten durchbricht, wenn der AO unter der Nulllinie liegt und die letzten 2 Balken rot waren. Die Testergebnisse mit ähnlichen Symbolen und Einstellungen, wie sie oben für die anderen Muster verwendet wurden, werden in diesem Bericht vorgestellt:
Bestätigung der Trendfortsetzung
Das Muster 5 fungiert als Kontrolle, die sicherstellt, dass ein bestimmter Trend (ob Aufwärts- oder Abwärtstrend) wahrscheinlich anhalten wird; dies verringert das Risiko der Eröffnung von Geschäften vor einer Umkehrung. Die AO kann bei der Trendfortsetzung durch Momentum-Analyse wirksam sein. Die Fortsetzung eines Aufwärtstrends liegt vor, wenn das AO-Histogramm über der Nulllinie grün bleibt und der Schlusskurs weiter nach oben tendiert. Umgekehrt setzt sich der Abwärtstrend fort, wenn die AO unter der Nulllinie liegt, der Kurs nach unten tendiert und die AO-Histogramme rot sind. Wir implementieren dies wie folgt in MQL5:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Close(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Close(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
Die Testläufe mit den Optimierungseinstellungen von GBP JPY für das Jahr 2022 auf dem 4-Stunden-Zeitrahmen ergeben den folgenden Bericht:
Weitere Muster, die eine Trendfortsetzung unterstützen können und ergänzend zu den oben dargestellten kodiert werden können, sind die Nulllinie (Muster-0) oder das Signal eines Abpralls, bei dem auf eine kurze Abschwächung des Momentums (z.B. kleinere Balken) eine erneute Verstärkung der AO-Histogrammbalken folgt, was darauf hindeutet, dass der vorherrschende Preistrend intakt ist, oder ein Twin Peaks-Signal, das wir oben in Muster-1 besprochen haben. Die Kombination dieser verschiedenen Muster zur Platzierung von Handelsgeschäften ist etwas, was der zusammengesetzte Expert Advisor tun kann und was wir am Ende des Artikels über die nutzerdefinierten Signale jedes Indikators besprechen.
Um jedoch nur mit Muster 5 zu handeln, setzen wir unseren Eingabeparameter für die verwendete Bitmap auf 32, und wenn wir mit diesem Muster in ähnlichen Einstellungen des Strategietesters wie oben mit den anderen Mustern optimieren, erhalten wir den folgenden Bericht von einigen der günstigen Eingabeeinstellungen. Da es von Natur aus vom Momentum beeinflusst wird, unterscheiden sich seine Vor- und Nachteile nicht wesentlich von denen der anderen Muster, die wir oben behandelt haben.
Das Abprallen von der Nulllinie
Das Abprallen an oder nahe der Nulllinie ist unser Muster-6 und die Prämisse hinter dieser Formation, wenn sich die AO der Nulllinie nähert, diese aber nicht durchbricht und ihren vorherigen Trend wieder aufnimmt. Die Handelsstrategie besteht also darin, dass eine Aufwärtsbewegung impliziert wird, wenn die AO oberhalb der Nulllinie in Richtung der Nulllinie sinkt und sich dann von ihr wegbewegt, ohne sie zu durchbrechen. Eine Abwärtsbewegung liegt auch dann vor, wenn die AO unter der Nulllinie liegt und sich ihr nähert, bevor sie sich wieder zurückzieht, ohne sie zu kreuzen. Wir haben dies wie folgt in der nutzerdefinierte Signalklasse kodiert:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) >= 0.0 && AO(X() + 1) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < AO(X() + 1) && AO(X() + 1) <= 0.0 && AO(X() + 1) > AO(X())) { return(true); } return(false); }
Ein Testlauf mit günstigen Optimierungseinstellungen, wie wir ihn mit den anderen Mustern oben durchgeführt haben, ergibt folgende Ergebnisse:
Frühzeitige Warnung vor einer Trendumkehr
Unser Muster-7, das achte, ist durch einen plötzlichen Farbwechsel von Grün zu Rot oder umgekehrt gekennzeichnet. Wir setzen die Farbablesungen der AO wie folgt um:
// color UpperColor(int ind) { // return(AO(ind) >= AO(ind + 1) && AO(ind + 1) > 0.0 ? clrGreen : clrRed); } color LowerColor(int ind) { // return(AO(ind) <= AO(ind + 1) && AO(ind + 1) < 0.0 ? clrRed : clrGreen); }
Diese Funktionen befinden sich in der Klassenschnittstelle der nutzerdefinierten Signalklasse und werden in der gesamten Klasse und nicht nur für dieses Muster verwendet. Die Handelsstrategie für das Muster-7 besteht darin, dass der Übergang von einer Abwärts- zu einer Aufwärtstrend dann erfolgt, wenn die Farbe des AO-Histogramms von rot auf grün wechselt, unabhängig von der Position des AO im Verhältnis zur Nulllinie. In ähnlicher Weise ist ein Übergang von einem Aufwärtstrend zu einem Abwärtstrend durch einen plötzlichen Wechsel der Histogrammfarbe von Grün zu Rot gekennzeichnet, unabhängig davon, wo sich die AO im Verhältnis zur Nulllinie befindet. Wir setzen dies wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && ((UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) || (LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrGreen))) { return(true); } else if(T == POSITION_TYPE_SELL && ((UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrRed) || (LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed))) { return(true); } return(false); }
Das Testen dieses Musters nur mit geeigneten Optimierungseinstellungen unter ähnlichen Bedingungen wie bei den anderen Mustern, mit der offensichtlichen Ausnahme, dass der verwendete Eingang des Musters 128 zugewiesen ist, liefert uns den folgenden Bericht:
Stärke des Trends über Histogramm
Unser letztes Muster, die Histogrammgröße, wird mit 8 indiziert und zielt darauf ab, das obige einfache Muster-7 einen Schritt weiterzuentwickeln, indem ein Maß für die AO-Histogrammgröße hinzugefügt wird. Aus unserer obigen Farbcode-Implementierung geht hervor, dass die Farbkodierung von AO durch Änderungen der Histogrammgröße gesteuert wird. Ein größeres Histogramm bei Überschreiten der Nulllinie oder eine kleinere Balkengröße bei Unterschreiten der Nulllinie führt also zu grünen AO-Balken. Dies ist in vielerlei Hinsicht die Prämisse von Muster-7. Im Falle von Muster 8 ist ein Anstieg des Aufwärtsmomentums durch aufeinanderfolgende grüne Balken gekennzeichnet (die einen Anstieg bzw. einen relevanten Rückgang bedeuten), und der jüngste AO-Histogrammbalken beträgt mehr als das Achtfache der Wertpapierspanne. Die Verwendung des 8-fachen des Spreads ist eine willkürliche Entscheidung. In der Regel könnte ein optimierter Eingabeparameter diesen Schwellenwert besser bestimmen, oder es könnte auch ein Bruchteil der aktuellen Volatilität verwendet werden. Der Impulsanstieg für einen Abwärtstrend ist das Umgekehrte dessen. Wir setzen dies in MQL wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && UpperColor(X() + 2) == clrGreen && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && LowerColor(X() + 2) == clrRed && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed) { return(true); } return(false); }
Die Hauptthese hier ist, dass kleinere Balken (ob grün oder rot) auf einen schwächer werdenden Trend und damit auf eine Konsolidierungsphase hindeuten, während ein längeres, deutlicheres Histogramm auf eine starke Dynamik und einen vorherrschenden Trend mit einer gewissen Dauerhaftigkeit hindeutet. Ein Testlauf für genau dieses Muster ergibt den folgenden Bericht:
Unsere nutzerdefinierte Signalklasse kann auch über mehrere Muster hinweg handeln, und wenn wir Optimierungen für die geeigneten Mustergewichte mit GBP JPY im gleichen Jahr und Zeitrahmen wie bei den einzelnen Musterläufen durchführen, erhalten wir folgende Ergebnisse:
Schlussfolgerung
Wir haben einen weiteren Bill-Williams-Indikator, den Awesome Oscillator, auf der Basis von Mustern betrachtet, wie wir es auch bei den vorherigen Indikatoren getan haben. Es gibt eine Reihe von Implementierungen und Aspekten, auf die wir bei der Kodierung dieser Muster nicht eingegangen sind, z. B. das Hinzufügen weiterer Eingabeparameter, um den Schwellenwert jedes Musters besser verwalten zu können, und natürlich die ordnungsgemäße Kreuzvalidierung aller bevorzugten Eingabeparameter vor der Verwendung. Dies bleibt wie immer dem Leser überlassen, da unser vollständiger Quellcode am Ende des Artikels beigefügt ist.
Datei Name | Beschreibung |
---|---|
SignalWZ_50.mqh | Nutzerdefinierte Signalklassendatei, basierend auf dem Awsom-Oszillator |
wz_50.mq5 | Beispiel für einen vom Assistenten zusammengestellten Expert Advisor, der die enthaltenen/verwendeten Dateien zeigt |
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/16502





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