Was Sie mit gleitenden Durchschnitten machen können
Einführung
Ich habe mehrere funktionierende Handelssysteme. Im Allgemeinen verwende ich keine Indikatoren, die für jeden Tick berechnet werden, sondern bevorzuge stattdessen gerade Linien. Aber manchmal stoße ich auf Ideen, die meine Wahrnehmung eines Charts verbessern oder sogar meine Sicht auf den Handel völlig verändern, auch wenn sie einige Berechnungen erfordern.
In diesem Artikel werden einige Ideen im Zusammenhang mit dem beliebtesten und verständlichsten Indikator vorgestellt - dem Gleitenden Durchschnitt (МА).
In seiner einfachsten Version wird der Indikatorwert anhand der bekannten Durchschnittsgleichung berechnet:
MA[i] = (Price[i]+Price[i+1]+...+Price[i+MAPeriod])/MAPeriod
Hier ist MA[i] das nächste Element der Folge, ein Punkt auf einer Kurve. Preis[i] — aktueller Preis, MAPeriode — Anzahl der Elemente für die Mittelwertbildung.
Natürlich können wir jeden beliebigen Preis verwenden: Open, Close, High, Low, gewichtete Durchschnittswerte, etc. Ein Standardindikator erlaubt die Auswahl sowohl des Berechnungspreises als auch der Berechnungsmethoden, einschließlich derer, die komplexer sind als ein einfacher Durchschnitt... Bei den Beispielen lasse ich die Möglichkeit offen, eine Berechnungsmethode auszuwählen. Dies ist jedoch nicht wichtig, um die Idee hinter den betrachteten Methoden zu verstehen. Alle Beispiele funktionieren ziemlich gut, unabhängig davon, ob wir einen "simplen" Gleitenden Durchschnitt (SMA), einen exponentiellen (EMA) oder einen anderen verwenden. Daher wird in allen Screenshots und Standardindikatorszenarien normalerweise der SMA verwendet. Alle Indikatoren verwenden Schlusskurse, wenn nicht anders angegeben. Es steht Ihnen frei, mit diesen Parametern zu spielen, um sie zu verbessern.
Wenn ich von einer einzelnen Kurve spreche, verwende ich in der Regel einen Standard-Periodenwert von 10 Balken. Wenn mehrere Kurven mit unterschiedlichen Perioden in einem einzigen Indikator verwendet werden, sind die verwendeten Perioden meist 5 und 8. Ich verwende nicht mehr als zwei Kurven mit unterschiedlichen Perioden.
Die Farben sind wie folgt: rot — schnell, orange — langsam... Wenn ich etwas anderes verwende, werde ich das im Text ausdrücklich angeben.
Vorlage Indikator
Ich habe mehrere Indikatoren erstellt, um Signale zu visualisieren, die bei der Verwendung verschiedener Ansätze für Kurven ausgelöst werden. Sie basieren auf einer einzigen Vorlage, die einem Standard-MACD, wie er in Standardbeispielen vorkommt, sehr ähnlich ist. Ich glaube, es macht keinen Sinn, hier den gesamten Code der Vorlage zu zeigen.
Jeder Indikator verwendet einen oder mehrere gleitende Durchschnitte und manchmal auch ATR, um einen Abstand zu Pfeilen zu definieren oder Kanallinien zu zeichnen.
Manchmal ist es einfacher, eine Idee zu visualisieren, wenn sich ein Indikator in einem Chart-Fenster befindet, während es manchmal einen Indikator in einem separaten Fenster erfordert. Dies wird mit Hilfe einer der Eigenschaften erreicht. Die folgende Eigenschaft wird für einen Indikator innerhalb eines Chart-Fensters verwendet:
#property indicator_chart_window
Befindet sich ein Indikator in einem separaten Fenster, wird die folgende Eigenschaft verwendet:
#property indicator_separate_window
In diesem Fall werde ich manchmal die Fensterhöhe über diese Eigenschaft einstellen:
#property indicator_height 100
Natürlich kann der Eigenschaftswert geändert werden.
Die Puffernamen haben das Suffix "Buffer" am Ende. Zum Beispiel werden die Standard-Pfeilpuffer ArrowDownBuffer und ArrowUpBuffer genannt. Wenn der Indikator die Linien zeichnet, wird der Puffer entsprechend der Linienfunktion benannt.
Alle globalen Variablen, die ich definiert habe, haben das Präfix "ext" (wenn es sich nicht um Puffer handelt). Zum Beispiel ist extATRData eine globale Variable, die die Quelldaten des ATR-Indikators enthält.
Ich werde Puffer verwenden, ohne in den "Serien"-Modus zu wechseln.
Während der Initialisierung setze ich alle leeren Werte auf 0:
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
So brauchen wir nur Pfeile oder Linien anzeigen Bedingungen, d.h. alles, was in der Hauptschleife bleibt.
Ich versuche, Indikator-Redraws zu vermeiden, daher wird das Zeichnen auf einer Nullkerze durchgeführt, während die Daten der bereits geschlossenen Kerzen für Berechnungen verwendet werden.
Linienkreuzung durch den Preis (Trendrichtung)
Im einfachsten Fall wird die Linie МА allein, in ihrer "natürlichen" Form, verwendet. Ich glaube, Sie alle haben ein ähnliches Bild auf Ihren Bildschirmen gesehen:
Abb. 1. Einfacher gleitender Durchschnitt
In den meisten Fällen nutzen Händler die Fähigkeit des MA, einem Trend zu folgen. Ein Trend kann als eine Reihe von Kerzen definiert werden, die sich auf einer Seite der Kurve befinden. Wenn beispielsweise mehr als zwei Kerzen unterhalb der Linie schließen, ist der Trend rückläufig und es ist an der Zeit, Verkaufspositionen in Betracht zu ziehen. Wenn der Schlusskurs oberhalb der Kurve liegt, gibt es einen Aufwärtstrend und es ist Zeit zu kaufen... Wenn der Kurs die Kurve kreuzt, sind wir Zeuge einer Trendwende.
Die Bedingungen, die es uns ermöglichen, einen durchschnittlichen Durchbruch zu verfolgen, können wie folgt aussehen:
//--- main cycle for(i=start+3; i<rates_total && !IsStopped(); i++) { ArrowDownBuffer[i]=0; ArrowUpBuffer[i]=0; //--- if( ((close[i-1]<extMAData[i-1] && open[i-1]>extMAData[i-1] ) ||(close[i-2]>extMAData[i-2] && open[i-2]>extMAData[i-2] && close[i-1]<extMAData[i-1] && open[i-1]<extMAData[i-1] ) ) ) { ArrowDownBuffer[i]=high[i]+extATRData[i]/5; } else if( ((close[i-1]>extMAData[i-1] && open[i-1]<extMAData[i-1] ) ||(close[i-2]<extMAData[i-2] && open[i-2]<extMAData[i-2] && close[i-1]>extMAData[i-1] && open[i-1]>extMAData[i-1] ) ) ) { ArrowUpBuffer[i]=low[i]-extATRData[i]/5; } } // main cycle
Anstatt die Eröffnungskurse zu prüfen, können wir unsere Aufmerksamkeit ausschließlich auf die Schlusskurse des aktuellen und des vorherigen Balkens richten. Wenn sie sich auf verschiedenen Seiten der Kurve befinden, sind wir Zeugen eines Durchbruchs.
Die Indikatordatei heißt MA-Breaking.mq5. Wenn man sie auf dem Chart ausführt, ergibt sich folgendes Bild (bei einer Standardkurvenlänge von 10 Balken):
Abb. 2. Durchbrechen des Durchschnitts
Ich glaube, diese Methode ist ohne zusätzliche Filter nicht sinnvoll. Es sieht so aus, als ob die Anzahl der Aufwärtspfeile fast der Anzahl der Abwärtspfeile entspricht, selbst im Trendbereich. Wenn man die МА-Periode vergrößert, verringert sich die Anzahl der Pfeile, was jedoch nicht sehr hilfreich ist, da ein starker Durchbruch mit einem Trend ohne Rollback eher selten vorkommt. In den meisten Fällen geht einer starken Bewegung eine flache Bewegung voraus. Lassen Sie uns also nach Filtern suchen...
Der МА als Unterstützungs-/Widerstandslinie
Die nächste ziemlich offensichtliche Möglichkeit, die Kurve zu nutzen, ist ihre Anwendung als Unterstützungs-/Widerstandslinie. Wenn der Kurs die Linie berührt, aber nicht überschreitet (auf der gleichen Seite schließt), haben wir ein Handelssignal. Am 17. Februar können wir zum Beispiel 3 Abwärtsbewegungen und, wenn es keine zusätzlichen Filter gibt, eine Aufwärtsbewegung (zu Beginn) erkennen.
Natürlich können wir diese Regel sowohl für die Eröffnung des ersten Handels als auch für die Ergänzung eines bereits bestehenden Handels verwenden.
Dieses Konzept wird in der Datei MA-Support.mq5 demonstriert.
//--- main cycle for(i=start+3; i<rates_total && !IsStopped(); i++) { ArrowDownBuffer[i]=0; ArrowUpBuffer[i]=0; //--- if( (high[i-1]>=extMAData[i-1] && close[i-1]<extMAData[i-1] && open[i-1]<extMAData[i-1] ) ) { ArrowDownBuffer[i]=high[i]+extATRData[i]/5; } else if( (low[i-1]<=extMAData[i-1] && close[i-1]>extMAData[i-1] && open[i-1]>extMAData[i-1] ) ) { ArrowUpBuffer[i]=low[i]-extATRData[i]/5; } } // Main cycle end
Unten sehen Sie das Ergebnis der Codeoperation:
Abb. 3. Verwendung des МА als Unterstützungs-/Widerstandslinie
Dies sieht besser aus als die vorherige Option. Wenn wir Take-Profit-Levels verwenden oder sogar einfach Aufträge durch Pfeile akkumulieren und durch einen entgegengesetzt gerichteten Pfeil wieder aussteigen (offensichtlich unter Verwendung einer Umkehrung), ist die Chance auf einen profitablen Handel hoch.
Je höher die МА-Periode ist, desto niedriger ist ihr Winkel und desto weiter ist sie vom Kurs entfernt. Dadurch werden Durchbruch- und Rückschlagssignale seltener, aber das Niveau wird als Unterstützungs-/Widerstandsniveau zuverlässiger. Ich möchte Ihnen zum Vergleich einen Chart mit einer Periodenlänge von 20 zeigen. Wir können sehen, dass Rückschläge seltener auftreten. Allerdings sind die Signale wahrscheinlich zuverlässiger, sodass ein Stop-Loss-Niveau reduziert werden kann.
Abb. 4. MA mit der längeren Periodenlänge (20)
Zum Beispiel, um 4 Uhr morgens. 17. Februar, liefert die rote Kurve ein Kaufsignal und wir erhalten einen Verlust, da die orangefarbene ein Verkaufssignal liefert. Im Falle der roten Linie können wir jedoch Signale um 8 Uhr, 10 Uhr und 15 Uhr nutzen, um die Position aufzustocken.
Bei höheren MA-Periodenlängen treffen die Signale später ein, was dazu führen kann, dass ein Teil des potenziellen Gewinns verloren geht, auch wenn die Anzahl der Positionen sich verringert.
Steigung
Je steiler die Steigung der Linie ist, desto schneller bewegt sich der Kurs und desto wahrscheinlicher ist es, dass sich der Trend bei der nächsten Kerze fortsetzt.
Am einfachsten lässt sich die Steigung anhand der Differenz zwischen dem aktuellen und dem vorherigen Wert messen. Ist die Differenz positiv, bewegt sich die Kurve nach oben, ist die Differenz negativ, bewegt sie sich nach unten.
Der Programmcode der Hauptschleife in MA-Slope.mq5 sieht wie folgt aus:
//--- main cycle for(i=start+SlopeShift*2; i<rates_total && !IsStopped(); i++) { SlopeDownBuffer[i]=0; SlopeUpBuffer[i]=0; slopeIndex=(extMAData[i-1]-extMAData[i-1-SlopeShift]); //--- if( slopeIndex<0 ) { SlopeDownBuffer[i]=slopeIndex; } else if( slopeIndex>0 ) { SlopeUpBuffer[i]=slopeIndex; } } // main cycle
Hier gibt SlopeShift die Anzahl der Bars an, die vom aktuellen Preis aus weitergegeben werden sollen. Der Standardwert ist eins. Aber wir können ziemlich interessante Ergebnisse erzielen, wenn wir diesen Wert erhöhen, indem wir zum Beispiel die Differenz der MA-Werte in zwei oder drei Balken verwenden.
Ich glaube, die resultierende Kurve sollte als Histogramm angezeigt werden. Das Ergebnis ist unten dargestellt:
Abb. 5. Histogramm der Steigung
Das Bild ist recht interessant.
Erstens ist es offensichtlich, dass wir zufällige Bewegungsschwankungen leicht verfolgen und sortieren können. Wenn sich die Richtung der Kurve nur während eines, zwei oder drei Balken ändert, ist es wahrscheinlich verfrüht, von einer Trendänderung zu sprechen. Auf jeden Fall sollten wir äußerst vorsichtig sein, um ihn nicht zu verpassen.
Zweitens: Kursänderungen sind sofort sichtbar. Wenn die Höhe der Diagrammsäule unter einem bestimmten Wert liegt, haben wir es höchstwahrscheinlich mit einer Seitwärtsbewegung zu tun. Es wäre also unvernünftig, länger als 2-3 Balken in Richtung der kleinen Steigung des MA zu handeln.
Drittens, trotz der Tatsache, dass die Kurve auf Trendsegmenten fast monoton steigend oder fallend aussieht, variiert die reale Änderungsrate stark von Balken zu Balken. Dies deutet auf eine Art von relativem Wert hin, der uns wahrscheinlich helfen wird, etwas zu sehen, was wir noch nicht sehen können.
Versuch (МА-Slope-Index-First.mq5)... Code:
//--- main cycle for(i=start+SlopeShift*3; i<rates_total && !IsStopped(); i++) { SlopeDownBuffer[i]=0; SlopeUpBuffer[i]=0; slopeIndex=(extMAData[i-1]-extMAData[i-1-SlopeShift]+Point()/100) /(extMAData[i-2]-extMAData[i-2-SlopeShift]+Point()/100); //--- if( slopeIndex<0 ) { SlopeDownBuffer[i]=slopeIndex; } else if( slopeIndex>0 ) { SlopeUpBuffer[i]=slopeIndex; } } // main cycle
Das Hinzufügen eines kleinen Wertes (Point()/100) zu Dividend und Divisor ändert das Ergebnis nicht sehr, aber es ermöglicht uns, den Fehler einer Teilung durch Null zu vermeiden.
Das Bild stellt sich wie folgt dar:
Abb. 6. Relativer Index der durchschnittlichen Steigung
An den Kreuzungspunkten sind scharfe Spitzen zu erkennen. Verschiebt man den Chart um ein paar Balken nach links, wird der Unterschied noch deutlicher.
Abb. 7. Relativer Index der MA-Steigung (nach links verschoben)
Abb. 7 zeigt anschaulich, wie die Spitzenwerte die Grenzen einer ziemlich starken Bewegung markieren. Die Differenz der Spitzenwerte zum übrigen Datenfeld ist recht groß. Die Tatsache, dass sich die "Peaks" in ihrer Größe so stark voneinander unterscheiden, sowie die Tatsache, dass der Unterschied zwischen den Peaks und den übrigen Daten so groß ist, führen zum nächsten Schritt. Da die Richtungsänderung so beachtlich ist, sehe ich keinen Sinn darin, die Histogramme eines relativen Steigungsindexes zu analysieren. Stattdessen können wir die Ausgabe einfach grober gestalten, indem wir sie binär machen. Zum Beispiel so (МА-Slope-Index-Bin.mq5):
//--- main cycle for(i=start+SlopeShift*3; i<rates_total && !IsStopped(); i++) { SlopeDownBuffer[i]=0; SlopeUpBuffer[i]=0; slopeIndex=(extMAData[i-1]-extMAData[i-1-SlopeShift]+Point()/100) /(extMAData[i-2]-extMAData[i-2-SlopeShift]+Point()/100); //--- if( slopeIndex<=-SlopeThreshold ) { SlopeDownBuffer[i]=-1; } else if( slopeIndex>=SlopeThreshold ) { SlopeUpBuffer[i]=1; } } // Main cycle
Dabei ist SlopeThreshold ein Schwellenwert der vorherigen Diagrammleistenhöhe, bei dem das Signal ausgelöst wird. Auf dem Bild ist der Parameterwert gleich 5.
Abb. 8. Relativer Index der durchschnittlichen Steigung (binär). SlopeThreshold=5.
Nachstehend ein weiteres Bild mit SlopeThreshold=15
Abb. 9. Relativer Index der durchschnittlichen Steigung (binär). SlopeThreshold=15.
Diese Streifen sind auf jeden Fall einen genaueren Blick wert!
Offensichtlich weisen solche Markierungen auf einen Richtungswechsel der aktuellen Kerze hin, oder auf 2-3 oder noch mehr Kerzen nach der markierten Kerze. In jedem Fall gibt es eine klare Abhängigkeit des Trends von der Kombination der Markerfarben, der Hauptrichtung und der aktuellen Kerze. Natürlich sollten wir Statistiken sammeln, zum Beispiel auf die Art und Weise, die ich in meinem Artikel über Tabellenkalkulationen beschrieben habe. In Kombination mit den anderen hier vorgestellten Methoden sieht der Indikator schon vielversprechend aus...
Natürlich können die binären Streifen auf dem Histogramm leicht durch Pfeile ersetzt werden, ähnlich wie bei den vorherigen Indikatoren.
Kanäle auf der Grundlage eines einzelnen Gleitenden Durchschnitts
Zusätzlich zu den oben beschriebenen Methoden können wir Kanäle auf der Basis von gleitenden Durchschnitten erstellen, um die Volatilität der Kursbewegung zu berücksichtigen. Die Möglichkeiten sind zahlreich. Ich werde nur zwei davon besprechen.
Die erste ist sehr einfach, da sie nur den Standard-MA-Indikator erfordert. Beim Hinzufügen eines Indikators auf dem Chart sollten wir einfach Levels hinzufügen. Der einzige Nachteil ist, dass jeder Zeitrahmen seine eigenen Niveaus hat. Ich habe sie in einem einzigen "Paket" zusammengefasst, damit ich sie nicht jedes Mal eingeben muss, wenn ich den Zeitrahmen wechsle. Für den JPY sieht das Bild wie folgt aus:
Abb. 10. Liste der Kanalwerte
Das endgültige Bild auf H1 sieht wie folgt aus:
Abb. 11. Aussehen der Levels (H1)
Die Levels sind hier auf einen Rollback eingestellt. Wenn also eine Kerze ein Level berührt und von diesem zurückprallt (oder ihm ziemlich nahe kommt), steigen Sie gegen den Trend ein. Zum Beispiel zeigt der Kanal auf dem Screenshot, dass am 22. Februar ein guter Zeitpunkt zum Verkaufen war. Wir können einen Auftrag in der Mitte der Signalkerze oder am Ende erteilen (in diesem Fall, wenn wir nach einem Rollback einsteigen, könnte ein Auftrag beim Tiefpunkt der Signalkerze - 115,100 - erteilt werden, während ein Stopp-Level bei 115,265 gesetzt werden könnte). Das unmittelbare Ziel ist das Berühren des Durchschnitts, während das endgültige Ziel das Berühren einer gegenüberliegenden Grenze desselben Kanals ist.
In diesem Fall ist es jedoch auch möglich, den Durchbruch des engen Kanals zu handeln. Beispielsweise schloss die 9-Uhr-Kerze am 22. Februar oberhalb der engen Kanalgrenze. Zwei Aufwärtskerzen haben über dem Durchschnitt geschlossen, während die dazwischen liegende Abwärtskerze nicht über die untere Grenze hinausgelangt ist. Die Steigung des ist eindeutig rückläufig (dies ist am deutlichsten zu sehen, wenn wir den Chart mit eingestellter MA-Steigung betrachten). All dies kann als klares Kaufsignal gewertet werden. Ein Stop-Level kann bei 114,570 gesetzt werden, der Einstiegspunkt kann anhand von Levels berechnet werden. Wir können ihn bei 115,230 ansetzen. Alternativ können wir auch einen Trailing-Stop nach Kerzen oder eine andere Methode verwenden, die wir wollen.
Bitte beachten Sie, dass nur zwei Kanäle auf der Periode zu sehen sind: der innerste Kanal und der etwas größere. Wenn wir zu einem höheren Zeitrahmen, z.B. D1, wechseln, ist der Kanal +-50 fast verborgen, während +-300 und +-1500 zu operativen Kanälen werden können. Auch der monatliche Kanal ist manchmal zu sehen. Er kann sogar Signale liefern, aber die am besten sichtbaren Kanäle werden als Hauptkanäle verwendet.
Abb. 12. Aussehen der Level (D1)
Ein ähnliches Bild zeigt sich auf der Wochen-/Monatsskala. Der vierte Kanal ist dafür am besten geeignet, während der dritte als interner und zusätzlicher Kanal verwendet werden kann.
Der innerste Kanal ist für М1-М15 vorgesehen.
Das Einstellungsprinzip ist offensichtlich: Wir schalten auf den erforderlichen Zeitrahmen um und wählen die Größe der Stufen so, dass wir eine minimale Anzahl von Berührungspunkten haben, während wir gleichzeitig die größtmögliche Amplitude zwischen ihnen haben. Am einfachsten geht das, indem man die Amplitude der wesentlichen Korrektur im aktuellen Zeitrahmen misst und durch 2 teilt. Die folgende Animation veranschaulicht diesen Vorgang.
Abb. 13. Messen der Kanalvolatilität (D1)
Nach einigen groben Schätzungen müssen wir die Größe eventuell genauer einstellen, aber das ist ziemlich einfach...
Kanäle auf der Grundlage von zwei gleitenden Durchschnitten (ATR3x5)
Die oben beschriebenen Kanäle sind gut, aber sie haben einige Nachteile.
Erstens muss die Kanalgröße für jeden Zeitrahmen und jedes Symbol manuell ausgewählt werden. Diesen Prozess zu automatisieren, scheint eine schwierige Aufgabe zu sein.
Zweitens werden die Pegel nicht in Puffern gespeichert, was bedeutet, dass es schwierig wäre, sie programmatisch zu verwenden.
Der Kanal, der auf gleitenden Durchschnitten und ATR basiert, hat diese Nachteile nicht. Die Idee ist einfach. Wir nehmen zwei gleitende Durchschnittsindikatoren mit der Periode von 3. Einer davon wird auf Hochs (high) angewendet, der andere auf Tiefs (low). Verschieben Sie dann die erhaltenen Linien im Abstand einer 5-Periode ATR in die entsprechende Richtung (die untere geht nach unten, die obere nach oben).
Der Kanal ist fertig! Er passt perfekt zu jedem Symbol und funktioniert meistens mit einem Rollback, da Durchbrüche ziemlich selten sind. Ich habe auch die Pfeile hinzugefügt, um Berührungen der Kanalgrenzen zu erkennen.
//--- main cycle for(i=start+3; i<rates_total && !IsStopped(); i++) { ArrowDownBuffer[i]=0; ArrowUpBuffer[i]=0; //--- MAUpBuffer[i]=extMAUpData[i]+extATRData[i]*DistanceCoefficient; MADownBuffer[i]=extMADownData[i]-extATRData[i]*DistanceCoefficient; if( (high[i-1]>=MAUpBuffer[i-1] && close[i-1]<MAUpBuffer[i-1]) ||( close[i-2]>MAUpBuffer[i-2] && close[i-1]<MAUpBuffer[i-1] ) ) { ArrowDownBuffer[i]=high[i]+extATRData[i]/5; } else if( (low[i-1]<=MADownBuffer[i-1] && close[i-1]>MADownBuffer[i-1]) ||( close[i-2]<MADownBuffer[i-2] &&close[i-1]>MADownBuffer[i-1] ) ) { ArrowUpBuffer[i]=low[i]-extATRData[i]/5; } }// main cycle
Hier ist DistanceCoefficient ein Indikatorparameter, mit dem wir den Abstand zu den Kanalgrenzen ändern können, um den Indikator an bestimmte Bedingungen anzupassen. Der Parameter kann jeden beliebigen Bruchteil eines Wertes annehmen. Es macht jedoch wenig Sinn, mehr als 2 einzustellen, da die Pfeile in diesem Fall fast vollständig verschwinden, d.h. es werden keine Abschlüsse gemacht.
Abb. 14. ATR3x5-Kanal
Natürlich kann der Indikator in Verbindung mit jedem anderen hier beschriebenen (oder nicht beschriebenen) Indikator verwendet werden.
Achten Sie beim Betrachten des Bildes darauf, wie der Preis mit den Ober- und Untergrenzen des Indikators interagiert. Das könnte hilfreich sein.
Mehrere Indikatoren mit unterschiedlichen Periodenlängen
Bis jetzt haben wir eine einzige MA-Linie für den Empfang von Kauf- und Verkaufssignalen verwendet. Viele Händler sind jedoch der Meinung, dass die Einstiegsgenauigkeit durch Hinzufügen eines weiteren Indikators oder mehrerer Indikatoren erheblich verbessert werden kann.
Erstellen wir also einen Chart mit zwei Kurven mit den Periodenlängen von 5 und 8 Balken. Die Periodenlängen sind der Fibo-Serie entnommen. Eine der Perioden beschreibt die "schnelle" Linie, während die andere die "langsame" beschreibt.
Abb. 15. Zwei MAs auf einem Chart
Zusätzlich zu den bereits betrachteten Merkmalen haben wir nun die Möglichkeit, die relative Position der Kurven und ihre "Ko-Direktionalität" (oder Divergenz) zu sehen. Der Abstand zwischen den МАs wird ebenfalls angezeigt.
Jeder der Parameter kann einige der von den Kurven angezeigten Bewegungsattribute verstärken oder abschwächen und auch unabhängige Einstiegssignale liefern.
Relative Position. Sich kreuzende MAs
Wenn der schnelle MA über dem langsamen MA liegt, befinden wir uns höchstwahrscheinlich in einem Aufwärtstrend, und die Wahrscheinlichkeit, dass die nächste Kerze aufwärts tendiert, ist sehr hoch. Es sollten auch andere Parameter berücksichtigt werden, z. B. die Steigung der Signallinie und andere Parameter.
Wenn der schnelle MA unter dem langsamen liegt, haben wir einen "globalen" (für den aktuellen Zeitrahmen) Abwärtstrend, und die Wahrscheinlichkeit, dass jede nachfolgende Kerze bärisch ist, steigt stark an, bis wir den Höhepunkt erreichen...
Wir können einen Trendwechsel annehmen, wenn der schnelle MA den langsamen durchbricht.
Wir sollten versuchen, einen Indikator zu entwickeln, der auf sich kreuzende MAs reagiert. Außerdem sollten wir auch die Seitwärtsbewegungen berücksichtigen, um Fehleinstiege zu reduzieren. Dies kann z. B. durch Berücksichtigung der Steigungsgröße des schnellen MA geschehen. In diesem Fall können wir den nächsten Code erhalten, um nach Signalen zu suchen (MA2-Breaking):
//--- main cycle for(i=start+3+SlopeShift*2; i<rates_total && !IsStopped(); i++) { ArrowDownBuffer[i]=0; ArrowUpBuffer[i]=0; //--- if( extMAFastData[i-1]<extMASlowData[i-1] && extMAFastData[i-2]>=extMASlowData[i-2] && MASlope(extMAFastData,i-1)<-SlopeThreshold && MASlope(extMASlowData,i-1)<SlopeThreshold/SlowDelimiter ) { ArrowDownBuffer[i]=high[i]+extATRData[i]/3; } else if( extMAFastData[i-1]>extMASlowData[i-1] && extMAFastData[i-2]<=extMASlowData[i-2] && MASlope(extMAFastData,i-1)>SlopeThreshold && MASlope(extMASlowData,i-1)>-SlopeThreshold/SlowDelimiter ) { ArrowUpBuffer[i]=low[i]-extATRData[i]/3; } } // main cycle
Hier ist MASlope eine Funktion, die die MA-Steilheit auf eine ähnliche Weise berechnet wie das Beispiel im Abschnitt Steigung. Sie akzeptiert als Parameter das Datenfeld für die notwendige Kurve und den Balkenindex, mit dem die Berechnungen durchgeführt werden.
SlopeTreshold — Schwellenwert des schnellen MA Steigungsdiagramms. Wie Sie sich vielleicht erinnern, handelt es sich höchstwahrscheinlich um eine Seitwärtsbewegung, wenn die Fast-MA-Steigung im Moment des Übergangs zu klein ist. Eine Seitwärtsbewegung ist in der Regel mit einer großen Anzahl von falschen Signalen verbunden, die zu Verlusten führen.
SlowDelimiter — Schwellenwert für die langsame MA-Steigung. Manchmal haben wir ein ziemlich gutes Signal, wenn der schnelle MA bereits nach unten gekippt ist, während der langsame MA noch nicht umgedreht hat, obwohl er kurz vor der Umkehr steht. Mit anderen Worten, der Eintrag
MASlope(extMASlowData,i-1)>-SlopeThreshold/SlowDelimiter
bedeutet Folgendes: Die langsame MA-Steigung kann entweder einen kleinen negativen Wert haben (nach unten gerichtet, wenn auch leicht), gleich Null sein oder positiv, aber nicht stark negativ.
Wenn wir den Indikator in seiner "klaren" Form verwenden, sollten der Schwellenwert und das Begrenzungszeichen für jedes Instrument und jeden Zeitrahmen separat ausgewählt werden. Unten sehen Sie das Ergebnis für USDJPY H1 mit SlopeTreshold=0,017 und SlowDelimiter=5:
Abb. 16. MA-Kreuzungssignale unter Berücksichtigung der Steigung
Das Bild hat keine Linien, damit die Pfeile deutlicher zu sehen sind. Wenn wir den richtigen Take-Profit-Wert (oder Exit-Level) wählen, können wir fast aus jedem Pfeil einen Gewinn erzielen, indem wir Stop-Levels setzen, die nicht zu verlustbringend sind.
Das folgende Bild zeigt denselben Chart bei näherer Betrachtung (größerer Zoom).
Abb. 17. MA-Kreuzung unter Berücksichtigung der Steigung (vergrößert)
Wie Sie sich vielleicht erinnern, erscheint das Signal bei der Nullkerze. Es wird jedoch das vorherige Intervall analysiert. Um also zu verstehen, warum ein Pfeil gezeichnet wird, sollten wir uns das Intervall von der grünen Linie bis zum Balken links ansehen.
Warum haben wir nicht zwei Pfeile auf der rechten Seite? Die Steigung überschreitet weder den Schwellenwert für einen langsamen noch für einen schnellen MA, und der Indikator betrachtet dieses Intervall als eine Seitwärtsbewegung. Hätte ich jedoch mit diesen Signalen in diesem Bereich gehandelt, hätte ich wahrscheinlich keinen Grund, mich zu beschweren, da der Trend weiter anstieg und einen Verkauf zu einem besseren Preis ermöglichte.
Abb. 18. Kreuzungssignale: Trend setzt sich fort.
Schlussfolgerung
Ich habe noch einige Dinge zu diesem Thema zu sagen, aber das werde ich in einem anderen Artikel tun.
In diesem Artikel habe ich mich mit den grundlegenden Dingen beschäftigt, die mit den MAs zusammenhängen und die es uns ermöglichen, die allgemeine Richtung der Kursbewegung zu verfolgen.
Außerdem habe ich Codes von Indikatoren grafisch dargestellt, um die Verwendung der wichtigsten MA-Parameter für Handelsentscheidungen zu demonstrieren.
Ich habe gezeigt, wie man eine Handelsstrategie verbessern kann, indem man die Eigenschaften bekannter Indikatoren kombiniert und sie gemeinsam anwendet.
Im nächsten Artikel möchte ich zeigen, wie man die Position jeder Kerze auf der Grundlage von Daten über gleitende Durchschnitte und davon abgeleitete Indikatoren berechnen kann.
Der Artikel bietet keine Garantie dafür, dass die hier enthaltenen Informationen Ihnen bei Ihrem Handel helfen werden.
Möge der Gewinn bei Ihnen bleiben!
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/10479
- 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.
Ich habe versucht, mit Ihrem Indikator MA-Slope-Index-Bin.mq5 zu experimentieren. Mir ist aufgefallen, dass selbst in Bereichen, in denen es einen klaren Abwärtstrend gibt, viel mehr positive als negative Werte produziert werden. Zunächst dachte ich, das Problem läge darin, dass ich große MA-Werte verwendete, wodurch sich MA als sehr zaghaft erweist und das Hinzufügen von Point()/100 zum Zähler und Nenner eines kleinen Wertes, den Sie verwendet haben, zu erheblichen Verzerrungen führt. Ich habe versucht, sie auf diese Weise zu verringern:
Es half nichts - der Indikator zeigte weiterhin viel mehr positive als negative Werte an. Und dann habe ich das Offensichtliche erkannt: Minus durch Minus geteilt, ergibt Plus. Ich muss etwas am Algorithmus ändern, damit der Indikator korrekt ist. Ich weiß noch nicht, wie ich es machen soll.
Es half nichts - der Indikator zeigte weiterhin viel mehr positive als negative Werte an. Und dann habe ich das Offensichtliche erkannt: Minus durch Minus geteilt, ergibt Plus. Ich muss etwas am Algorithmus ändern, damit der Indikator korrekt ist. Bisher habe ich nicht verstanden, wie.
In diesem Fall wäre die offensichtliche (für mich) Anwendung wie folgt: positiver Wert ist nur eine starke Zunahme der Steigung (in der gleichen Richtung), negativer Wert - scharfe Richtungsänderung.
Wenn Sie diesen Indikator für den eigenständigen Handel verwenden, können Sie zum Beispiel vor der Anzeige des Pfeils die vorherige Steigung und die aktuelle Steigung überprüfen, und wenn sie übereinstimmen, den Pfeil nicht anzeigen, wenn sie unterschiedlich sind - den Pfeil in der entsprechenden Farbe anzeigen.
Da ich Niveaus mag, beobachte ich einfach, wie sich der Kurs nach einem starken Anstieg verhält, z. B. bei Murray- oder Gann-Niveaus (der Unterschied besteht darin, dass Murray vorschlug, signifikante Intervalle durch 8 zu teilen, während Gann vorschlug, je nach den anderen eingehenden Intervallen zu halbieren oder durch 3 zu teilen). Das bin ich zum Beispiel, Pivots und Fibs sind auch toll... Die Hauptsache ist, dass ich bei einer plötzlichen Veränderung der Neigung auf der Ebene von einer Umkehr ausgehen kann.
Ich füge ein Bild hinzu, um den vorherigen Gedanken zu verdeutlichen :-)
Die lilafarbenen Linien sind die Zeiten der Extremwerte, nach denen die Salatebenen gebildet wurden (ich habe das Intervall einfach halbiert und zwei Intervalle (+-100% und +-200%) nach oben und unten gesetzt).
Außerdem gab es am 28.01.2022 ein Signal für eine starke Veränderung des Gefälles. Wir können sehen, dass die Hauptrichtung der Steigung nach oben zeigt (entweder durch den Hauptsteigungsindikator [unteres Diagramm] oder durch die MA-Box selbst)... Dennoch ist der Kurs auf die Tagesdiagonale gestiegen und hat sich sogar von ihr gelöst. Der Preis liegt oberhalb der MA-Kurve. Der Haupttrend ist aufwärts gerichtet, aber ein Abprallen von der Diagonale deutet auf eine Korrektur hin. Mögliche Handelsoptionen: