Indikatoren: ATR ZigZag

 

ATR ZigZag:

ATR-basierte ZigZag-Implementierung.

ATR ZigZag

Autor: Andre Enger

 

Ich dachte, ich hätte verstanden, dass der Parameter "Min bar period before directional change" einen Richtungswechsel nach diesem Zeitraum erlaubt.

Wenn der Parameter z.B. auf 3 gesetzt ist, muss der Mindestabstand zwischen einem Hoch und einem Tief 3 Kerzen (oder mehr) betragen. Aber wie ich gesehen habe, ist das nicht der Fall (siehe Bild). Dann würde ich gerne wissen, welchen Effekt dieser Parameter hat.

ATR ZigZag


Ich verstehe auch nicht, welche Wirkung der Parameter "Max bar period before directional change" hat.

 
Petr Nosek:

Ich dachte, ich hätte verstanden, dass der Parameter "Min bar period before directional change" einen Richtungswechsel nach diesem Zeitraum erlaubt.

Wenn der Parameter z.B. auf 3 gesetzt ist, muss der Mindestabstand zwischen einem Hoch und einem Tief 3 Kerzen (oder mehr) betragen. Aber wie ich gesehen habe, ist das nicht der Fall (siehe Bild). Dann würde ich gerne wissen, welche Wirkung dieser Parameter hat.


Ich verstehe auch nicht, welche Wirkung der Parameter "Max bar period before directional change" hat.

Danke, das ist eine gute Frage!

Wie es in der Beschreibung heißt, ist der Zeittrigger dem ATR untergeordnet und sollte als "weiche" Einschränkung betrachtet werden. Ein Hauptziel des Indikators ist es auch, sicherzustellen, dass die Höchst- und Tiefststände echte Kursminima und -maxima sind, was als "harte" Einschränkung Vorrang hat. Wenn also in Ihrem Bild das kurze Segment in der Mitte durch den Zickzack-Kurs ersetzt würde, wäre das nicht der kleinste Kurs in diesem Segment, oder?

Was ich mit "sekundär" meine, ist, dass die Min-Periode dem Indikator sagt, dass er sich nicht ändern soll, wenn die Segmentdauer geringer ist als diese, obwohl der ATR-Trigger ihm sagt, dass er sich ändern soll. Die maximale Periode sagt dem Indikator, dass er sich ändern "soll" (unabhängig davon, dass die ATR nicht ausgelöst wurde), wenn so viele Balken vergangen sind, seit ein neuer Höchst-/Tiefststand gefunden wurde. Wenn sich ein Trend nach oben oder unten fortsetzt, wird diese Periode auf 0 zurückgesetzt, aber wenn sie ausgelöst wird, sucht sie das Segment vom letzten Hoch/Tief nach seinem Mindest-/Maximalpreis als Extremum in der entgegengesetzten Richtung und fügt ein Segment und einen Trendwechsel als solches ein.

 
Andre Enger:

Danke, das ist eine gute Frage!

Wie es in der Beschreibung heißt, ist der zeitliche Trigger gegenüber der ATR sekundär und sollte als "weiche" Einschränkung betrachtet werden. Ein Hauptziel des Indikators ist es auch, sicherzustellen, dass Spitzen und Talsohlen echte Preisminima und -maxima sind, was als "harte" Einschränkung Vorrang hat. In Ihrem Bild bezüglich des kurzen Segments in der Mitte, wenn der Zickzackkurs den Tiefpunkt beim nächsten Balken setzen würde, wäre das nicht der kleinste Preis in diesem Segment, oder?

Was ich mit "sekundär" meine, ist, dass die Min-Periode dem Indikator sagt, dass er sich nicht ändern soll, wenn die Segmentdauer geringer ist als diese, obwohl der ATR-Trigger ihm sagt, dass er sich ändern soll. Die maximale Periode sagt dem Indikator, dass er sich ändern "soll" (unabhängig davon, dass die ATR nicht ausgelöst wurde), wenn so viele Balken vergangen sind, seit ein neuer Höchst-/Tiefststand gefunden wurde. Wenn sich ein Trend nach oben oder unten fortsetzt, wird diese Periode auf 0 zurückgesetzt, aber wenn sie ausgelöst wird, sucht sie das Segment vom letzten Hoch/Tief nach seinem Mindest-/Maximalpreis als Extremum in der entgegengesetzten Richtung und fügt ein Segment und einen Trendwechsel als solches ein.

Ich danke Ihnen für Ihre Erklärung. Es war nicht einfach, Ihre "sollte nicht", "sollte", "soll", "muss" und so weiter zu verstehen. Ich musste es mehrmals lesen, aber jetzt hoffe ich, dass ich es verstehe. Der Hauptauslöser ist ATR, aber wenn dieser Auslöser innerhalb der "Min-Periode" geschieht, wird er (vorübergehend) nicht berücksichtigt und der Indikator wartet auf ein neues Extremum. Aber wenn das neue Extremum nicht innerhalb der "Max Periode" passiert (ein flacher Trend), dann findet der Indikator Hoch/Tief nach dem letzten bestätigten Swing und dieses Hoch/Tief ist ein neuer Swing.

 
Petr Nosek:

Ich danke Ihnen für Ihre Erklärung. Es war nicht leicht, Ihre "sollte nicht", "sollte", "soll", "muss" und so weiter zu verstehen. Ich musste sie mehrmals lesen, aber jetzt hoffe ich, dass ich sie verstanden habe. Der Hauptauslöser ist ATR, aber wenn dieser Auslöser innerhalb der "Min-Periode" geschieht, wird er (vorübergehend) nicht berücksichtigt und der Indikator wartet auf ein neues Extremum. Aber wenn das neue Extremum nicht innerhalb der "Max Periode" passiert (ein flacher Trend), dann findet der Indikator Hoch/Tief nach dem letzten bestätigten Swing und dieses Hoch/Tief ist ein neuer Swing.

Das ist richtig, und ich denke, das ist in der Abbildung geschehen. Meine Begriffe, die ich auch im Code gefunden habe, sind:

  • Sollte sich nicht ändern: es ist weniger als "Min Periode" vergangen, seit ein höheres Hoch oder ein niedrigeres Tief gefunden wurde
  • Soll sich ändern: Die Länge einer Gegenbewegung ist größer als der ATR-Schwellenwert
  • Soll sich ändern: Es ist mehr als "Max Periode" vergangen, seit ein höheres Hoch oder ein niedrigeres Tief festgestellt wurde
  • Muss sich ändern: die Länge der Gegenbewegung ist größer als der Startpunkt des Trends

Wenn sowohl "soll" als auch "darf nicht", wird der Trend geändert. Wenn entweder "soll oder muss", wird der Trend auf eine Weise geändert, die die ATR/Zeitbeschränkungen außer Kraft setzen könnte.

Die Option "kann sich ändern" ist weniger wichtig, stellt aber sicher, dass eine Trendänderung durch den ATR-Trigger nur dann erfolgt, wenn der jüngste Balken das Extremum einer gegenläufigen Trendbewegung ist, und nicht nur, weil der ATR-Schwellenwert im Laufe der Zeit kleiner geworden ist.

Auch wenn ich in diesem Kommentar von "Trend" und "Gegentrend" spreche, ist damit die aktuelle Zickzack-Richtung gemeint und nicht der Trend, den sie im Markt verfolgt.
 
Daten in Hoch- und Tiefpunkten werden angezeigt ZigZag trennt Hoch- und Tiefpunkte nicht!
 
Hallo Liebes


Wenn wir nur die ATR-Bedingung im ATRZigZag-Indikator berücksichtigen wollen, können wir MinPeriod=0 und MaxPeriod=0 berücksichtigen


Danke

 
Hallo Liebe

Bitte bereiten Sie auch die mq4-Version vor Danke

 
Vielen Dank dafür, ich war auf der Suche nach einem ATR-basierten Zickzack-Indikator, um Zickzacks in einer Weise zu zeichnen, die Menschen wahrnehmen würde. Und dieser ist sehr gut, wenn ich die Einstellungen je nach Zeitrahmen geändert. Ich habe gerade die Funktion hinzugefügt, dass die Mindestbar-Einstellung ignoriert wird, wenn die letzte Verzögerung mindestens 50% der vorherigen Verzögerung ausmacht. Dann wird es die Verzögerung bilden, auch wenn es in 1 oder zu Bars gebildet wird. Für mich, es ist muıch besser auf diese Weise: //--- Lags berechnen double previousLag = _lastDirection ? (ExtPeaksBuffer[_lastIndex] - low[_lastIndex2]) : (high[_lastIndex2] - ExtTroughsBuffer[_lastIndex]); double currentLag = _lastDirection ? (ExtPeaksBuffer[_lastIndex] - low[bar]) : (high[bar] - ExtTroughsBuffer[_lastIndex]); //--- Bedingungen bool shouldntChange = (bar - _lastIndex < MinPeriod) && (currentLag < 0.5 * previousLag);