
MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 53): Market Facilitation Index
Einführung
Der Artikel sollte sich mit dem maschinellen Lernen befassen, da die Abfolge der vergangenen Artikel bereits feststeht. Ich bleibe jedoch bei einem Handelsindikator, da das Material für den nächsten Artikel zum maschinellen Lernen noch nicht ganz fertig ist. Das wird hoffentlich bald der Fall sein.
Der Market Facilitation Index (MFI) spiegelt die Fähigkeit des Marktes wider, Preisänderungen innerhalb eines bestimmten Zeitrahmens vorzunehmen. Zur besseren Einordnung ist es vielleicht sinnvoll, ihn mit einem anderen Bill-Williams-Indikator zu vergleichen, den wir im letzten Artikel behandelt haben: dem Awesome Oscillator (AO). Wenn wir mit dem Fokus/Zweck beginnen, verfolgt AO das Momentum über einen Vergleich zwischen 34-Perioden- und 5-Perioden-Medianpreis-Durchschnitten, mit der These, dass größere Größenveränderungen große Momentum-Verschiebungen darstellen und vice versa. Der MFI hingegen befasst sich mit der Effizienz der Preisbewegung im Verhältnis zum Volumen, d. h. er versucht, die Frage zu beantworten, um wie viel der Preis reagiert, wenn das Handelsvolumen x beträgt, im Vergleich zu einem Volumen von y.
Der AO nutzt den Kontext der Nulllinie, um die Art des Impulses im Spiel zu interpretieren. Tatsächlich sind alle bisher behandelten Bill-Williams-Indikatoren von der Null-Linie abhängig, der MFI jedoch nicht. Er generiert absolute Werte auf der Grundlage der Preisspanne und des Volumens, was einen direkten Vergleich der Veränderungen des MFI erforderlich macht. Auch die Anwendungsfälle sind etwas anders, denn der MFI eignet sich, wie bereits erwähnt, zum Verständnis der Markteffizienz und der Volumendynamik, insbesondere wenn er mit anderen Indikatoren kombiniert wird und nach einer Bestätigung von Ausbrüchen sucht. Der AO hingegen eignet sich ideal für Trendfolgestrategien, da er hilft, Fraktale oder Verschiebungen im Momentum zu erkennen.
wobei:
- High: Der höchste Preis des ausgewählten Zeitraums.
- Low: Der niedrigste Preis des ausgewählten Zeitraums.
- Volume: Das gesamte Handelsvolumen während dieses Zeitraums.
Während der MFI selbst einen Indikatorwert darstellt, ergibt sich sein Nutzen/ seine Bedeutung aus der Beobachtung seiner Veränderungen unter verschiedenen Markt-/Volatilitätsbedingungen. Als reiner Histogramm-Oszillator mit nur positiven Werten bietet er eine Reihe von erwähnenswerten Schlüsselfarben.
Die grüne Farbe steht für:
Die blaue Farbe:
Die braune Farbe:
Und die rosa Farbe:
Wir bestimmen oder setzen unsere Farben in MQL5 wie folgt:
color Color(int ind) { // return( (Volume(ind) > Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrGreen : ((Volume(ind) < Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrBrown : ((Volume(ind) < Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrBlue : ((Volume(ind) > Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrPink : clrNONE )))); }
Bei der Bestimmung des Volumens stützen wir uns auf das Tick-Volumen, da das reale Volumen bzw. das Kontraktvolumen (insbesondere im Devisenhandel) nicht bekannt ist. Wenn jedoch Aktien gehandelt werden und diese Informationen verfügbar sind, sollten stattdessen das verwendet werden.
Tick-Volumen vs. Real-Volumen
Die einfachste Definition des Tick-Volumens, die für MFI relevant ist, wäre die Anzahl der Preisänderungen innerhalb eines bestimmten Zeitrahmens. Dies ist eine Vereinfachung, da Ticks in der Regel mehr als nur Preisänderungen darstellen. Sie beinhalten oft jede Änderung der Kontraktinformationen des gehandelten Wertpapiers, was Dinge wie Swap-Sätze, Handelsstopp-Level usw. umfasst. Beim Forex-Handel sind jedoch aufgrund der dezentralen Natur der Forex-Märkte für viele Broker keine echten Volumendaten verfügbar, sodass das Tick-Volumen die beste Alternative darstellt.
Das reale Volumen hingegen gibt die tatsächliche Anzahl der während eines bestimmten Zeitraums gehandelten Kontrakte oder Lose an, was auf dem zentralisierten Markt für Aktien und Futures sehr häufig, auf dem Devisenmarkt jedoch selten ist. Studien haben eine starke Korrelation zwischen dem Tick-Volumen und dem realen Volumen gezeigt, sodass der in diesem Artikel verwendete Proxy des Tick-Volumens nicht weit vom Idealzustand entfernt ist.
Darüber hinaus kann die Verwendung des Tick-Volumens bei der Systementwicklung mit einem bestimmten Broker den Expert Advisor mit anderen Brokern kompatibler oder nutzbarer machen, da das Tick-Volumen in den meisten Fällen bei den meisten Brokern verfügbar ist und die Leistung zwischen den Brokern nicht wesentlich beeinflusst, im Gegensatz zum echten Volumen, wenn Sie einen bestimmten Broker finden, der es anbietet. Die starke positive Korrelation mit der Marktaktivität und die niedrigen Nutzungskosten sind weitere wichtige Vorteile für die Verwendung des Tick-Volumens.
Wie nicht anders zu erwarten, hat es auch seine Grenzen. Dazu gehört vor allem die übermäßige Berücksichtigung von Preisänderungen und Änderungen von Sicherheitsinformationen im Handel. Schwankt der Kurs eines Wertpapiers innerhalb eines kurzen Intervalls schnell zwischen zwei Kursen, so wird jede dieser Schwankungen als ein Tick und damit als eine Volumeneinheit gezählt, auch wenn sich kein tatsächlicher Kursanstieg zeigt. Das Argument für diese Zählweise ist, dass sie die Größe der Marktteilnehmer erfasst. Wenn Händler x jedoch einen großen Auftrag mit hohem Volumen erteilt und die Preisänderung sich über mehrere Punkte erstreckt, würde diese Preisänderung nur als ein einziger Tick protokolliert werden.
Auch wenn die Tick-Daten bei den meisten Brokern weithin zugänglich sind, da sie in der Regel verschiedene Liquiditätsanbieter haben, kann die Anzahl der zu einem bestimmten Zeitpunkt aufgezeichneten Ticks bei den verschiedenen Brokern sehr unterschiedlich sein, was im Prinzip bedeuten würde, dass vor der Einführung ein Test mit den Daten des vorgesehenen Brokers erforderlich wäre. Darüber hinaus können in Märkten mit geringer Volatilität oder in ruhigen Märkten geringfügige Preisänderungen zu irreführenden Tick-Volumen-Spitzen führen.
Zusammenfassend lässt sich also sagen, dass das reale Volumen, insbesondere beim Handel mit Aktien oder Wertpapieren an zentralisierten Märkten, dem Tick-Volumen vorzuziehen ist, da es die Marktbeteiligung besser erfasst, was auch bedeutet, dass es ein besserer Indikator für wichtige Muster wie Divergenzen ist, und auch weniger anfällig für das Rauschen von Kursschwankungen, wie oben dargelegt. Das Problem bei der Verwendung des realen Volumens im Devisenhandel ist, wie bereits erwähnt, dass es nur begrenzt verfügbar ist, da nur wenige Broker es anbieten, und die wenigen, die es anbieten, können Premium-Konten für das Abonnement dieser Volumendaten verlangen. Hinzu kommt, dass die angebotenen Daten aufgrund des dezentralen Charakters des Marktes wahrscheinlich von Broker zu Broker uneinheitlich sind.
Signifikanz des absoluter Werts
Das MFI hat noch eine weitere Besonderheit. Sein absoluter Wert ist nicht so bedeutend. Betrachtet man andere Oszillatoren wie den RSI oder sogar den Commodity Channel Index, so sind ihre absoluten Werte wichtige Schwellenwerte, die für wichtige Entscheidungen herangezogen werden können, z. B. wenn der RSI die Schwelle von 30 überschreitet.
Die absoluten Werte des MFI sind nicht so wichtig. Ironischerweise sind sie auf kleinen Zeitrahmenm größer, während sie auf größeren Zeitrahmen viel kleiner sind! Ich vermute, dass die meisten Händler, die Rauschen vermeiden und sich immer auf die größeren Zeitrahmen konzentrieren wollen, dies als Hinweis darauf verstehen können, dass die absoluten Werte des MFI für sich genommen nicht so bedeutend sind.
Dabei kommt es auf die relative Bedeutung der benachbarten Balken an, nicht auf ihre Werte.
Grünes Signal
Unser erstes Muster, pattern-0, ist das grundlegende grüne Signal, bei dem wir nach einem grün gefärbten Histogramm suchen, das als Einstiegssignal dient. Wie Sie bei diesem und allen folgenden Mustern feststellen werden, muss der MFI entweder mit der Kursentwicklung oder einem anderen Indikator gepaart werden, um einen bestimmten Trend, entweder nach oben oder nach unten, ableiten zu können.
Für ein Aufwärtssignal bräuchten wir also ein grünes Histogramm, das, wie oben erwähnt, eine positive Korrelation zwischen Kursverlauf und Volumen impliziert, sowie einen Schlusskurs, der über einem vorherrschenden gleitenden Durchschnitt liegt. Wir verwenden einen Indikatorzeitraum von 8 und optimieren diesen Wert nicht, aber Änderungen an diesem Wert sind dem Leser freigestellt. Die Implementierung dieses Musters in MQL5 sieht folgendermaßen aus:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_0(ENUM_POSITION_TYPE T) { if(Color(X()) == clrGreen) { if(T == POSITION_TYPE_BUY && Close(X()) > MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) < MA(X())) { return(true); } } return(false); }
Dieses Muster, das wie in diesen Artikeln mit 0 gekennzeichnet ist, kann nur getestet werden, indem dem Eingabeparameter „Patterns Used Bitmap“ der Wert 1 zugewiesen wird. Wenn wir dies tun und Optimierungsläufe für das Paar EUR JPY für das Jahr 2023 auf dem 12-Minuten-Zeitrahmen durchführen, erhalten wir die folgenden Testergebnisse für einige der fairen Eingabeeinstellungen:
Da wir auf der Grundlage des Codes unserer nutzerdefinierten Signalklasse zusammengestellte Expert Advisors testen, optimieren wir typischerweise die Schwellenwerte für Eröffnungs- und Schlusskurse, das Delta des Einstiegskurses, den Ablauf der ausstehenden Aufträge und natürlich den Schwellenwert für das getestete/ausgewählte Muster. Die Schwellenwerte reichen von 0 bis 100. Für Leser, die neu sind, gibt es hier und hier eine Anleitung, wie man den am Ende des Artikels beigefügten Code verwendet, um einen Expert Advisor über den MQL5-Assistenten zusammenzustellen.
Unser pattern-0 eignet sich daher am besten für die Trendbestätigung, da es gut zu Trendfolgestrategien passen würde.
Das Fade-Muster
Unser nächstes Muster, pattern-1, bezieht sich auf Situationen, in denen der MFI einen Rückgang der Dynamik trotz eines anhaltenden Preistrends anzeigt. Er steht in der Regel für einen nachlassenden Kauf- oder Verkaufsdruck und wird daher zur Vorwegnahme von Umschwüngen oder Marktkonsolidierungen verwendet. Das Fade-Muster, ein Abklingen der Bewegung, lässt sich in erster Linie anhand von Divergenzen erkennen, d. h. wenn ein rosa MFI angezeigt wird, während die Kurse weiter steigen (was eine Abwärts-Divergenz wäre), oder wenn ein rosa MFI bei fallenden Kursen angezeigt wird (was eine Aufwärts-Divergenz wäre). Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_1(ENUM_POSITION_TYPE T) { if(Color(X()) == clrPink) { if(T == POSITION_TYPE_BUY && Close(X()) < MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X())) { return(true); } } return(false); }
pattern-1 ist ebenfalls durch ein Abflachen nach Preisspitzen gekennzeichnet. Wie aus der obigen rosafarbenen Farbformel ersichtlich, ist das rosafarbene Muster in erster Linie das Ergebnis eines rückläufigen Volumens, was wiederum die Fähigkeit zur Aufrechterhaltung vorherrschender Trends verringert. Ein Test mit dem oben genannten Paar EUR JPY auf einem 12-Minuten-Zeitrahmen ergibt folgendes Bild.
Die Eingaben, die für diesen Lauf verwendet werden, stammen aus der Optimierung für dieselben Parameter wie oben beschrieben: Schwellenwerte für Öffnen und Schließen, Einstiegspreislücke, Ablauf der ausstehenden Order und Schwellenwert für Muster. Da wir ausschließlich mit pattern-1 getestet haben, ist die Eingabebitmap für die verwendeten zwei Muster 2 hoch 2, was 2 ergibt.
Mögliche Ursachen für dieses Muster sind neben dem offensichtlichen Rückgang des Volumens Gewinnmitnahmen von Händlern oder eine Erschöpfung des Momentums. Die Auswirkungen sind auch ein wenig unterschiedlich. Es könnte ein frühes Signal für einen Umschwung sein, was bedeutet, dass Händler sich darauf vorbereiten können, offene Positionen zu verlassen oder in die entgegengesetzte Richtung einzusteigen. Es könnte sich aber auch um eine Konsolidierungswarnung handeln, insbesondere wenn sie ohne Volatilität oder Divergenz beobachtet wird.
Das Abklingen ist jedoch ein zuverlässigeres Signal, wenn sie von einer Preisdivergenz begleitet wird, da dies eine hohe Wahrscheinlichkeit für eine Umkehr darstellt. Das Risikomanagement kann mit engeren Stopps durchgeführt werden, da das Fade-Muster als Warnung für diese Positionsanpassungen dient. Auch die Kombination mit Bollinger Bändern und gleitenden Durchschnitten kann helfen, Rückschritte zu markieren und weitere Signale zu bestätigen.
Fake Signal
Das nächste Muster, pattern-2, das durch den blauen MFI gekennzeichnet ist, wird auch als Fake-Signal bezeichnet. „Fake“, weil die Preisbewegung auf dem Chart nicht durch das Volumen bestätigt wird. Oft werden Händler dazu verleitet, Positionen zu früh einzugehen, was zu Verlusten führt. Diese Funktion ist in unruhigen oder nicht volatilen Märkten aufgrund der Häufigkeit von falschen Ausbrüchen und Umkehrungen üblich und wird in MQl5 wie folgt implementiert:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_2(ENUM_POSITION_TYPE T) { if(Color(X()) == clrBlue) { if(T == POSITION_TYPE_BUY && Close(X()) < MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X())) { return(true); } } return(false); }
Als Erstes überprüfen wir, ob unser MFI-Histogramm blau gefärbt ist, was, wie in der obigen Formel dargestellt, bedeutet, dass die Preisspanne bei abnehmendem Volumen steigt. Sobald die blaue Farbe bestätigt ist, liegt ein Aufwärts-Muster vor, wenn der Schlusskurs unter dem gleitenden Durchschnitt liegt, während ein Abwärts-Muster das Gegenteil ist, wenn der Schlusskurs über dem gleitenden Durchschnitt liegt.
Die zentrale These hinter unserer Umsetzung ist, dass das aktuelle Kursgeschehen die zugrunde liegenden Trends nicht widerspiegelt und daher eine Korrektur bevorsteht. Wir führen eine Optimierung für das Jahr 2023 durch, wie bei den beiden obigen Mustern, wobei wir das Paar EUR-JPY auf dem 12-Minuten-Zeitrahmen verwenden, und die günstigen Optimierungseinstellungen aus diesem Zeitraum liefern uns folgenden Ergebnisse:
pattern-2 ist also auf geringes Volumen und Illiquidität zurückzuführen, was oft zu unzuverlässigen Signalen führt. In der Regel kann kurzfristiges Rauschen durch bestimmte Volumenspitzen aufgrund von Nachrichtenereignissen oder Marktmanipulationen zu irreführenden MFI-Signalen führen. Auch in Fällen, in denen das Fake-Muster lediglich einen Rücksetzer inmitten eines großen Trends korrigiert, kann es als starkes Signal für eine Trendfortsetzung dienen. Sich allein auf den MFI ohne einen Unterstützungsindikator zu verlassen, könnte nicht nur zu vielen Handelsgeschäften, sondern auch zu Verlusten führen. Neben dem MA-Indikator, den wir bei der Bestimmung des Musters 2 mit dem MFI kombinieren, kann also ein alternativer Indikator wie ein Preiskanal verwendet werden, um falsche Muster herauszufiltern, die bei sehr starken Trends in Form von Rücksetzern häufig angezeigt werden.
Neben Kanalindikatoren wie den Bollinger-Bändern können auch Kerzen-Muster mit Unterstützungs-/Widerstandsniveaus verwendet werden. Und wie immer ist es bei solchen Mustern mit geringer Wahrscheinlichkeit wichtig, auf eine Bestätigung zu warten und höhere Zeitrahmen für die Analyse zu verwenden.
Squat-Muster
Unser nächstes Muster, pattern-3, das Squat- oder Kniebeuge-Muster, tritt auf, wenn der MFI trotz signifikanter Preisbewegung oder Volatilität stark schwankt oder abflacht. Dies ist ein Zeichen für die Unentschlossenheit des Marktes, bei der sich Kauf- und Verkaufsdruck fast die Waage halten, was dazu führt, dass der Markt in die Knie geht, bevor es zu einem Ausbruch oder einer Umkehrung kommt.
Durch die braune Farbe gekennzeichnet, implementieren wir sie in MQL5 wie folgt:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_3(ENUM_POSITION_TYPE T) { if(Color(X()) == clrBrown) { if(T == POSITION_TYPE_BUY && Close(X()+1) <= MA(X()+1) && Close(X()) >= MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+1) >= MA(X()+1) && Close(X()) <= MA(X())) { return(true); } } return(false); }
Wie wir aus der obigen Auflistung ersehen können, ist die erste Voraussetzung für dieses Muster braune Histogramme für den MFI, die, wie in den Formeln in der Einleitung definiert, durch abfallenden MFI und abfallendes Volumen gekennzeichnet sind. Ein potenzielles Aufwärts-Muster würde daher vor dem Hintergrund dieser erheblichen Unsicherheit durch das erste braune MFI-Histogramm und den Übergang des Kurses von einem Wert unterhalb des gleitenden Durchschnitts zu einem Schlusskurs oberhalb desselben signalisiert werden.
Auf der anderen Seite würde ein rückläufiges Muster auch ein braunes Histogramm des MFI erfordern, aber der Preis würde den MA von oben kreuzen, um darunter zu schließen. Wie bei den Mustern 0-2, oben, wenn wir eine Optimierung nur für dieses Muster durchführen, indem wir die verwendete Bitmap-Eingabe auf 2 hoch 3 (8) setzen, erhalten wir die folgenden Ergebnisse für einige der günstigen Eingabeeinstellungen:
pattern-3 ist das Ergebnis einer Volumenkompression, die häufig in Phasen abnehmender Handelsvolumina auftritt, was auf einen Mangel an Marktüberzeugung hinweist. Das Squat-Muster geht in der Regel einer bedeutenden Kursbewegung voraus, da der Markt normalerweise von einer Konsolidierung zu einem neuen Trend übergeht. Häufig gehen dem Squat-Muster Akkumulations- und Distributionsphasen voraus, in denen Händler und Institutionen Positionen akkumulieren oder verteilen, um ein Gleichgewicht zwischen Käufern und Verkäufern herzustellen.
Diese Perioden niedriger Volatilität können auch das Ergebnis von Phasen sein, in denen die Märkte auf einen Katalysator warten, wie z. B. die Veröffentlichung von Wirtschaftsdaten oder geopolitische Ereignisse. Diese braunen MFI-Regionen könnten also als Übergangszonen betrachtet werden, da sie typischerweise auftreten und dazu beitragen, entscheidende Unterstützungs-/Widerstandsregionen im Kursgeschehen zu definieren. Die Auswirkungen sind weitreichend; vor allem signalisieren sie eine bevorstehende Volatilität, da die Kniebeuge oft so interpretiert wird, dass sich der Markt zusammenzieht und sich auf einen Ausbruch vorbereitet. Während die Ausbruchsrichtung selbst nicht durch den Squat vorhergesagt wird, kann die Kombination mit anderen Indikatoren und sogar der Preisaktion, wie wir es mit unserer obigen MQL5-Implementierung getan haben, helfen, die nächste Richtung zu identifizieren.
pattern-3 bietet auch eine gute Gelegenheit, enge Stop-Loss-Niveaus in der Nähe der jüngsten Preisextreme zu setzen, was zur Risikominimierung beiträgt. Mögliche alternative Einstiegsstrategien, die daraus entwickelt werden können, können sich neben unserer Implementierung vor allem auf die Filterung von Fehlsignalen konzentrieren. Wenn man zum Beispiel nach einem Kursausbruch auf einen Anstieg des Volumens wartet, würde man sich auf 2 Signale verlassen, nicht nur auf die Kursbewegungen.
Divergenz-Muster
Unser pattern-4 basiert auf der Divergenz zwischen dem MFI und dem vorherrschenden Kursgeschehen. Da wir bereits festgestellt haben, dass der MFI die Preisbewegung pro Volumeneinheit misst und damit aufzeigt, wie effektiv die Märkte Liquidität absorbieren, könnte seine Ausrichtung in diesem Zusammenhang zu einiger Verwirrung führen. Preistrends sind aus unserer Sicht binär, d. h. wir betrachten entweder Aufwärtstrends oder Abwärtstrends, daher ist dieser Teil einfach.
Wenn es jedoch um den MFI geht, kann ein Anstieg der Größenordnung in diesem Fall nicht von Nutzen sein, da er entweder NICHT mit einem Aufwärtstrend divergiert (d. h. steigende Preise sind parallel zu einem steigenden MFI) oder sogar im Falle eines Abwärtstrends, da er dasselbe widerspiegeln würde. Betrachtet man hingegen einen Rückgang des MFI, so ist leicht zu erkennen, dass jeder vorherrschende Trend auf dem Markt eine Abweichung von diesem markieren würde.
Wenn bei sinkendem MFI niedrigere Tiefststände erreicht werden, würde dies eine Divergenz zwischen starken Abwärtstrends und dem lauen MFI bedeuten. Umgekehrt würde ein höherer Höchststand auch eine Divergenz mit einem rückläufigen MFI bedeuten, da er auf sinkende Preisspannen hinweisen würde und die Preise dennoch steigen würden. Wir implementieren dies daher in MQL5 wie folgt:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X()+1) > Low(X()) && MFI(X()+1) > MFI(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X()+1) < High(X()) && MFI(X()+1) > MFI(X())) { return(true); } return(false); }
In unserer obigen Auflistung suchen wir bei dieser Gelegenheit nicht nach einem Farbcode, sondern, wie oben argumentiert, einfach nach niedrigeren Tiefstständen, um ein Aufwärtssignal zu markieren, und nach höheren Höchstständen, um ein Abwärtssignal zu markieren. Und wie bereits erwähnt, sollte der MFI in beiden Fällen rückläufig sein. Nach einer Optimierungsphase erhalten wir, wie bei den vorherigen Mustern, den folgenden Bericht über einige der günstigen Eingaben der Optimierung:
Die Volumenkomponente des MFI scheint der Dreh- und Angelpunkt für dieses Muster zu sein. Der Grund dafür ist, dass Divergenzen, die mit einem sinkenden Volumen einhergehen, häufig Umkehrsignale verstärken, und auf dem Papier ist dies ein stichhaltiges Argument. In unserem Fall untersuchen wir jedoch steigende oder konstante Volumina, aber mit sinkenden Preisspannen, wie im absoluten MFI-Wert angegeben. Dies mag neuartig erscheinen, aber unsere oben genannten Testergebnisse sind vielversprechend. Nichtsdestotrotz können die Leser den beigefügten Quellcode jederzeit ändern und mit steigenden MFI für höhere Hochs und niedrigere Tiefs für Aufwärts- bzw. Abwärts-Setups experimentieren.
Häufig wird auch empfohlen, dieses Muster (pattern-4) mit anderen Bill-Williams-Indikatoren wie dem Awesome Oscillator oder dem Accelerator Oscillator zu kombinieren. Außerdem wird die Verlässlichkeit dieses Musters erheblich gesteigert, wenn es mit einer Preisstruktur, z. B. einer Unterstützung/Widerstand, zusammentrifft. Es ist auch wichtig zu wissen, dass Divergenzen in Märkten mit starken Trends oft zu Korrekturen und nicht zu vollständigen Umkehrungen führen. Auf der anderen Seite kann die MFI-Divergenz auf Märkten mit begrenzter Handelsspanne zuverlässiger sein. Wie bereits oben dargelegt, lassen sich mit diesem Muster auch zusätzliche Dinge wie die Platzierung von Stop-Loss-Positionen besser steuern.
Breakout-Signal
Das Muster pattern-5 ähnelt dem pattern-1, mit dem Unterschied, dass wir einen Ausbruch erwarten. Dies ist daher einfach und wird in MQL5 wie folgt umgesetzt:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_5(ENUM_POSITION_TYPE T) { if(Color(X()) == clrGreen) { if(T == POSITION_TYPE_BUY && Close(X()+1) < MA(X()+1) && Close(X()) > MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+1) > MA(X()+1) && Close(X()) < MA(X())) { return(true); } } return(false); }
Wie in unserer obigen Auflistung ersichtlich, haben wir bei der Definition dieses Musters nur die Prüfung auf einen MA-Crossover hinzugefügt. Ein Testlauf mit ausgewählten Eingabeeinstellungen aus einem Optimierungslauf, ähnlich dem, den wir mit den obigen Mustern durchgeführt haben, liefert uns diesen Bericht:
Wenn der Kurs ein wichtiges Niveau (egal ob Unterstützung oder Widerstand) neben einem grünen MFI-Balken durchbricht, markiert dies oft einen gültigen Ausbruch. Die strenge Definition der wichtigsten Unterstützungs-/Widerstandsniveaus ist beim manuellen Handel oft selbstverständlicher als bei der Automatisierung einer Strategie. Aus diesem Grund kann man sich bei der strikten Anwendung dieses Musters dafür entscheiden, Änderungen auf der Grundlage der einzelnen Wertpapiere vorzunehmen. Trotz der hohen Wahrscheinlichkeit dieser Konstellation könnte es immer noch an Volumenunterstützung mangeln, was ein Risiko für Fehlbewegungen darstellen könnte.
Das „fehlende Volumen“ rührt von der MFI-Formel her, die wir in der Einleitung zu Beginn dieses Artikels erläutert haben. Dort zeigen wir, dass die Volumenkomponente der Formel im Nenner steht, sodass ein Anstieg des MFI trotz eines grünen Histogramms nicht unbedingt mit einem proportionalen Anstieg des Volumens einhergeht. Die Kombination mit den Bollinger Bändern kann daher eine gewisse Absicherung gegen Volumendefizite bieten, die zu falschen Signalen führen könnten.
Auch die Verwendung von Fraktalen oder RSI kann dazu beitragen, zu überprüfen, ob das Momentum mit dem Ausbruch oder Crossover übereinstimmt.
Fortsetzung des Trends
Unser pattern-6 dient als Erweiterung von pattern-5, indem es zwei aufeinanderfolgende grüne MFI-Balken erfordert, im Gegensatz zu dem oben geforderten einen. Diese Zwei-Bar-Anforderung umfasst sowohl Aufwärts- als auch Abwärts-Setups. Ein Aufwärts-Muster wird dadurch definiert, dass der Schlusskurs über dem MA liegt, während ein Abwärts-Muster dadurch gekennzeichnet ist, dass der Schlusskurs in die entgegengesetzte Richtung geht. Wir setzen dies in MQL5 wie folgt um:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_6(ENUM_POSITION_TYPE T) { if(Color(X()+1) == clrGreen && Color(X()) == clrGreen) { if(T == POSITION_TYPE_BUY && Close(X()+1) > MA(X()+1) && Close(X()) > MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+1) < MA(X()+1) && Close(X()) < MA(X())) { return(true); } } return(false); }
Ein Optimierungslauf mit ähnlichen Einstellungen wie die bereits oben behandelten Muster liefert uns den folgenden Bericht:
Da es sich hierbei um eine einfache Erweiterung von pattern-5 handelt, werden die bereits behandelten Hinweise zur Auslegung und zu den Nachteilen des Musters berücksichtigt.
Range Trading Setup
Unser achtes und letztes Muster, pattern-7, zielt darauf ab, aus der braunen MFI-Konsolidierungsphase Kapital zu schlagen, indem es mit dem RSI gepaart wird. Was wir als Range-Trading bezeichnen, ist eine Möglichkeit, sich auf Volatilitätsausbrüche vorzubereiten, wie bereits weiter oben bei pattern-3 dargelegt wurde. Die Implementierung von MQL5 sieht folgendermaßen aus:
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_7(ENUM_POSITION_TYPE T) { if(Color(X()) == clrBrown) { if(T == POSITION_TYPE_BUY && RSI(X()+1) <= 30.0 && RSI(X()) >= 30.0) { return(true); } else if(T == POSITION_TYPE_SELL && RSI(X()+1) >= 70.0 && RSI(X()) <= 70.0) { return(true); } } return(false); }
Ausgehend von einem braunen MFI-Balken suchen wir nach einem Aufwärts-Muster, wenn der RSI von einem Wert unter 30 auf einen Wert darüber klettert. In ähnlicher Weise würde ein Abwärts-Muster interpretiert werden, wenn der RSI von der 70er-Marke auf einen Wert darunter käme. Beim Testen nur mit diesem Muster muss die Eingabe für die verwendeten Bitmaps 128 (2^7) betragen, und ein Optimierungslauf nur für dieses Muster ergibt den folgenden Bericht:
Ich habe argumentiert, dass es für Händler besser ist, jeweils ein Muster zu testen und dann nur eines (oder maximal 2) für weitere Tests oder Einsätze auszuwählen. Der Versuch, alle Muster zu testen, könnte zu Ergebnissen führen, die schwerer vorwärts zu bringen sind, weil sich dabei viele der einzelnen Muster gegenseitig aufheben und so die tatsächliche Leistung der einzelnen Muster verloren geht. Zu Informationszwecken versuchen wir jedoch, die Schwellenwerte für alle Muster zu optimieren und gleichzeitig die Bitmap eines Musters so zu wählen, dass unser Testziel maximiert wird. Wir haben dies getan und die Ergebnisse einiger der besten Einstellungen sind unten aufgeführt:
Schlussfolgerung
Wir haben einen weiteren Bill-Williams-Indikator, den Market Facilitation Index, auf der Basis von Mustern untersucht, wie es in dieser Artikelserie üblich ist. Obwohl es sich nicht um einen sehr verbreiteten Indikator handelt und auch eindeutig um einen Typ, der von anderen Indikatoren verwendet werden müsste, um Signale zu generieren, könnte er einen Vorteil für Händler bieten, die neben den sehr verbreiteten Indikatoren nach etwas Außergewöhnlichem suchen.
Dateiname | Beschreibung |
---|---|
SignalWZ_53.mqh | Klassendatei des nutzerdefinierten Signals |
wz_53.mq5 | Mit dem Assistenten zusammengestellter Expert Advisor mit Header, der die verwendeten Dateien anzeigt. |
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/17065
Warnung: Alle Rechte sind von MetaQuotes Ltd. vorbehalten. Kopieren oder Vervielfältigen untersagt.
Dieser Artikel wurde von einem Nutzer der Website verfasst und gibt dessen persönliche Meinung wieder. MetaQuotes Ltd übernimmt keine Verantwortung für die Richtigkeit der dargestellten Informationen oder für Folgen, die sich aus der Anwendung der beschriebenen Lösungen, Strategien oder Empfehlungen ergeben.





- 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.
Danke für den MFI-Einblick. Ich werde die Strategie noch einmal überprüfen und testen. Wie war Ihr Risiko-Ertrags-Verhältnis beim Testen dieser Strategie?
.
Es scheint, dass die hervorgehobene
MFI(X()+1) > MFI(X()
fragwürdig ist (vor allem im Vergleich zum Algorithmus anderer Patterns)!!
Könnte einer von ihnen sein:
MFI(X()+1) < MFI(X()
Zu den folgenden Punkten:
Es scheint, dass der hervorgehobene
fragwürdig ist (vor allem im Vergleich zum Algorithmus anderer Patterns)!!
Könnte einer von ihnen sein:
MFI(X()+1) < MFI(X()
Der Autor möchte sagen, dass der frühere MFI in beiden Fällen größer sein muss als der aktuelle MFI , damit die Bedingung gültig ist .
MFI(X()+1) > MFI(X()
In einem solchen Fall misst er;
abnehmende MFI-Stärke, aber steigendes unteres Tief im Abwärtstrend
abnehmende MFI-Stärke, aber zunehmendes höheres Hoch im Aufwärtstrend .
Ich hoffe, das hilft.Der Autor möchte sagen, dass der frühere MFI in beiden Fällen größer sein muss als der aktuelle MFI , damit die Bedingung gültig ist .
In einem solchen Fall misst er;
abnehmende MFI-Stärke, aber steigendes unteres Tief im Abwärtstrend
abnehmende MFI-Stärke, aber zunehmendes höheres Hoch im Aufwärtstrend .
Ich hoffe, das hilft.Danke für die Erläuterung.
Ja, das macht Sinn.