インディケータ: ATR ジグザグ

 

ATR ジグザグ:

ATR ベースのジグザグ実装

ATR ジグザグ

作者: Andre Enger

 

私は、「方向転換前の最小バー期間」パラメータが、この期間後に方向転換を許容することを理解しているつもりでした。

例えば、パラメータが3に設定されている場合、ピークと谷の間の最小距離は3ローソク(またはそれ以上)でなければなりません。しかし、私が見たように、それは真実ではありません(写真参照)。では、このパラメータはどのような効果があるのか知りたい。

ATRジグザグ


また、"Max bar period before directional change"(方向転換前の最大バー期間)というパラメーターがどのような効果をもたらすのかもわかりません。

 
Petr Nosek:

私は、「方向転換前の最小バー期間」というパラメーターが、この期間後に方向転換を可能にすることを理解しているつもりでした。

例えば、パラメータが3に設定されている場合、ピークと谷の間の最小距離は3ローソク(またはそれ以上)でなければなりません。しかし、私が見たように、それは真実ではありません(写真参照)。では、このパラメータはどのような効果があるのか知りたい。


また、"方向転換前の最大バー期間 "というパラメータがどのような効果を持つのかも理解できません。

ありがとうございます!

説明にあるように、時間トリガーはATRの二次的なものであり、「ソフト」な制約とみなされるべきです。このインディケータの主な目的は、ピークと谷が実際の価格の最小値と最大値であることを確認することであり、これは「ハード」な制約として優先されます。 つまり、真ん中の短いセグメントに関するあなたの写真では、ジグザグが次のバーに谷を置くとしたら、それはそのセグメントで最小の価格ではないでしょう?

私が言いたいのは、ATRトリガーが "そうすべきだ "と言っているにもかかわらず、セグメントの期間がこれより短い場合、最小期間はインジケータに "変わるべきではない "と言っているということです。最大期間は、新たなトップ/ボトムが見つかってからそれ以上の期間が経過している場合、(ATRがトリガーされていないことに関係なく)インジケータに「変更しなければならない」と指示します。トレンドが上昇または下降を続けるたびに、この期間は0にリセットされま すが、トリガーがかかると、最後の高値/安値から逆方向の極値として最小/最 大値の セグメントを検索し、セグメントとトレンドの変化を挿入します。

 
Andre Enger:

ありがとう!

説明にあるように、時間トリガーはATRの二次的なものであり、「ソフト」な制約とみなされるべきです。このインジケータの主な目的は、ピークと谷が実際の価格の最小値と最大値であることを確認することであり、これは「ハード」な制約として優先されます。 つまり、真ん中の短いセグメントに関するあなたの画像では、ジグザグが次のバーに谷を置くとしたら、それはそのセグメントで最小の価格ではないでしょう?

私が言いたいのは、ATRトリガーが "そうすべきだ "と言っているにもかかわらず、セグメントの期間がこれより短い場合、最小期間はインジケータに "変わるべきではない "と言っているということです。最大期間は、新たなトップ/ボトムが見つかってからそれ以上の期間が経過している場合、(ATRがトリガーされていないことに関係なく)インジケータに「変更しなければならない」と指示します。トレンドが上昇または下降を続けるたびに、この期間は0にリセットされま すが、トリガがかかると、最後の高値/安値から逆方向の極値としての最小/最 大値の セグメントを検索し、セグメントとトレンドの変化を挿入します。

ご説明ありがとうございました。"should't"、"should"、"shall"、"must "など、なかなか理解できませんでした。何度も読み返しましたが、理解できたと思います。主なトリガーはATRですが、このトリガーが「最小期間」内に発生した場合は(一時的に)考慮されず、インジケータは新しい極値を待ちます。しかし、「最大期間」内に新たな極端値が発生しない場合(平坦なトレンド)、インジケータは最後に確認されたスイングの後に高値/安値を見つけ、この高値/安値が新たなスイングとなります。

 
Petr Nosek:

ご説明ありがとうございました。あなたの "shouldn't"、"should"、"shall"、"must "などを理解するのは簡単ではありませんでした。何度も読み返しましたが、理解できたと思います。主なトリガーはATRですが、このトリガーが「最小期間」内に発生した場合は(一時的に)考慮されず、インジケータは新しい極値を待ちます。しかし、「最大期間」内に新たな極端値が発生しない場合(フラットなトレンド)、インジケータは最後に確認されたスイングの後に高値/安値を見つけ、この高値/安値が新たなスイングとなります。

その通りです。コードにある私の用語は次のとおりです:

  • 変更すべきでない: 高値または安値が見つかってから、「Min期間」未満しか経過していない
  • 変化すべき: 逆トレンドの動きの長さがATRのしきい値より大きい。
  • 変更すべき: 高値または安値が見つかってから「最大期間」以上経過している。
  • 必ず変更しなければならない: 反トレンドの動きの長さがトレンドの始点より大きい。

変えるべき」と「変えるべきでない」の両方の場合、トレンドは変更される。あるいは、"shall or must "の場合、トレンドはATR/時間の制約を上書きする形で変更される。

変更可能」はそれほど重要では ありませんが、ATRトリガーによるトレンド変更は、直近のバーが逆トレンドの動きの極値である場合にのみ起こり、ATRのしきい値が時間の経過とともに小さくなったからというだけではないことを確認します。

また、このコメントで「トレンド」と「カウンタートレンド」と言ったとしても、これは現在のジグザグの方向を意味するものであり、市場のトレンドを追跡するものではありません。
 
高ポイントと低ポイントの両方のデータを表示 ZigZagは高ポイントと低ポイントを分離しない!
 
こんにちは


ATRZigZagインジケータでATRの条件のみを考慮したい場合、MinPeriod=0、MaxPeriod=0を考慮することはできますか?


ありがとうございます。

 

mq4バージョンもご用意ください。

 
ATRベースのジグザグインジケーターを探して いました。このインジケーターはタイムフレームによって設定を変えるととても良いですね。ただ、直近のラグが前回のラグの50%以上形成されている場合、最小バー設定を無視する機能を追加しました。そうすると、1本でも1本でもラグが形成されます。私にとっては、この方がはるかに良い方法です://--- ラグを計算する double previousLag = _lastDirection ?(ExtPeaksBuffer[_lastIndex] - low[_lastIndex2]) : (high[_lastIndex2] - ExtTroughsBuffer[_lastIndex]); double currentLag = _lastDirection ?(ExtPeaksBuffer[_lastIndex] - low[bar]) : (high[bar] - ExtTroughsBuffer[_lastIndex]); //--- 条件 bool shouldntChange = (bar - _lastIndex < MinPeriod) && (currentLag < 0.5 * previousLag);