記事の目次

根拠と適用範囲

参照資料は方向転換、ZigZagの挙動、ATRを説明しています。終値のみを使いレッグごとに閾値を固定する本検出器は独立した実装提案であり、収益性の検証結果や既存指標の完全な複製ではありません。

データと市場終値または個別の約定イベントを、一貫した方式で時系列処理します。この二つのサンプリング方式は別実験であり、一つの結果に混ぜません。
研究対象の時間足M30、H=1、および日足チャートは、調査例です。同じATR乗数であっても、異なる市場では必ずしも同じ経済動向、レイテンシー、または実行コストを表すとは限りません。
価格は105に達するが、高値の確定は102まで下がった時点。次の100の安値は、103まで反発してから確定する。図解を原寸で開く
オリジナルの合成終値。最初の2つのレッグは、例として固定された3点閾値を使用しています。極値マーカーと確認マーカーは、異なるバーに表示されます。

実践の流れ

実践手順: ATR ZigZag:その時点の情報で反転を確認するスイング検出
詳しい手順を以下に示します。各段階でデータ不足や条件不成立があれば、除外理由を記録します。
  1. レッグを初期化方向、暫定的な極値、および参照ATRを保存します。
  2. 暫定極値を更新同方向への継続では、現在の候補だけを変更する。
  3. 反転幅を測定距離を固定された閾値と比較してください。
  4. イベントを公開する閾値に達したら、極値の発生時刻と確定時刻を保存する。
  5. 状態を切り替える新たに固定した閾値で逆方向のレッグを開始する。

スイングの持続時間はイベントによって決定されます

上昇レッグは三本で終わることも三十本続くこともあります。処理中のレッグで観測した最も高い終値を保持し、十分な下落が起きてからその高値を確定します。そのため確定遅延は、右側の足数を固定するピボット方式と異なり可変です。閾値を大きくすると小さな変動を無視できますが、通常は転換点の認識が遅くなります。

本質的時間リサーチでは、パーセンテージ閾値[1]による方向性の変化を記述します。TradingViewのZigZagは独自のピボット構造を持ち、最終セグメント[2]を修正できます。この記事では、代わりに確認済みイベントの不変のストリームを指定し、現在の候補は別に保存します。暫定エンドポイントが明示的に暫定である場合は、変更可能な暫定エンドポイントは許容されますが、それを過去の取引シグナルとして提示することは許容されません。

検出器は規則に従って完了した値動きを分類します。確定高値が将来を含む最高値になるとは主張せず、価格は直後に再反転し得ます。コードと報告の両方で、イベント検出、トレンドの解釈、取引管理を分けてください。一つの層の正しさを別の層の成功と混同しないためです。

レッグが始まったらボラティリティの閾値を固定する

提案されたルールは、新しいレッグが始まる直前のバーの ATR14 から A_ref を取得し、そのレッグ全体を通して q×A_ref を変更しません。q=2 は研究設定です。真の範囲と選択された平滑化方法を明示的に定義します。ATR 実装では、異なる平滑化規則を使用できます。[3]。バーごとにしきい値を再計算すると、異なる検出器が作成されます。

長期にわたる変動局面では、以前の変動局面の閾値が引き継がれることがあります。これは、安定したルールを実現するための意図的なトレードオフであり、凍結が経済的に優れているという証拠ではありません。適応型閾値を検討する場合は、そのバージョンを個別に登録し、各閾値の更新を保存してください。完成したチャートをレンダリングする際に、過去の閾値を最新のATRで置き換えないでください。

ベースラインは、バーの高値と安値の順序を捏造することを避けるために終値を使用します。ウォームアップ後の最初の終値でUPを初期化し、その開始値を確定安値としてラベル付けしないでください。DOWNに切り替わると、現在の終値が暫定安値になります。必要なATRが欠落しているか、正でない場合は、初期化要件が満たされるまで検出を一時停止します。

state = UP; extreme = first_close; extreme_i = first_i
threshold = q * ATR[first_i-1]
for each closed bar t after first_i:
    if state == UP:
        if C[t] > extreme: extreme, extreme_i = C[t], t
        elif extreme - C[t] >= threshold:
            emit HIGH(extreme_i, confirmed_at=t, price=extreme)
            state = DOWN; extreme, extreme_i = C[t], t
            threshold = q * ATR[t-1]
    else:
        if C[t] < extreme: extreme, extreme_i = C[t], t
        elif C[t] - extreme >= threshold:
            emit LOW(extreme_i, confirmed_at=t, price=extreme)
            state = UP; extreme, extreme_i = C[t], t
            threshold = q * ATR[t-1]

数値による確認と取引失敗の結果

合成例ではA_ref=1.5、q=2なので三ポイントの反転が必要です。終値は100→102→105→104→103と進みます。下落幅は二ポイントにとどまり、105の高値はまだ暫定です。次に102で終わるとHIGHを発行し、価格は105、発生時点は三番目の観測、確定時点は六番目の観測となります。

その最後の終値を106に変えると暫定高値は106へ移ります。まだ確定していないので、消されたショートシグナルはありません。102への下落で高値が確定した後、DOWNレッグが100まで下がり103へ戻るとします。このレッグ独自の固定閾値も三なら、100の安値は103で確定します。完成した線は極値を結びますが、実際に判断できた価格は102と103です。

検出が正しくても取引は失敗し得ます。確定後の次の始値101.8でショートし、105.2にストップを置く提案では、予定価格リスクは3.4ポイントです。106まで反発すれば構造仮説は崩れ、ストップ約定でスリッページが生じ得ます。方向転換イベントは発生していても、その後の継続はなかったのであり、検出エラーとは区別します。

境界テストでは、閾値と等しい反転、そこから一ティック小さい反転、一ティック大きい反転を確認します。等しい場合に確定するかを固定してください。本実装では確定します。同じ極値が繰り返される場合、厳密に高い高値または低い安値でのみ更新するため、先の発生時刻を保持します。

検出器は継続取引と反転取引のどちらを選択するかは決めない

考えられる仮説は2つあります。新たに確認された方向転換に従うか、それに逆らって取引するかです。提案されているベースラインは、次の実行可能な始値でその方向転換に従い、確認されたばかりの極値を超えたところでストップロスを設定し、反対方向への方向転換で決済します。各履歴チャートセグメントごとに、この2つの解釈を個別に選択しないでください。

構造的ストップは、確認時点では遠く離れている可能性があります。注文サイズは、実際のエントリーからストップまでの距離に加えて、推定コストとポートフォリオの制約を反映する必要があります。非経済的な設定は、発注前に利用可能な情報のみを使用して拒否してください。保留注文がギャップを通じて既に約定している場合、リスクが魅力的でなくなったという理由で、その取引を遡及的に削除することはできません。

パーセンテージの閾値には独自の分母規則が必要です。減少は(peak−C)/peak、増加は(C−trough)/troughとなります。これらは対数リターン空間では対称ではありません。対数価格差は、厳密に正の価格に対して対称的な代替手段を生み出すことができます。基準がゼロまたは負の場合、通常の比率は不適切です。

実行テストでは、バー内で複数の閾値をまたぐ急激な動きを再現する必要があります。終値のみのベースラインは、その終値における状態遷移によってサポートされるイベントを最大で1つだけ出力します。バー内のすべての変動を再現することはできません。ティックベースのバージョンではより多くのイベントが生成される場合がありますが、これは入力解像度の変化であり、終値の実装が間違っているという証拠ではありません。

出来高とレッグの長さを区別して比較する

長いレッグは、観測値が多いため、総ボリュームが大きくなることがよくあります。総ボリューム、バー数、平均ボリューム、価格変動をまとめて保存します。提案されている努力機能はボリュームを max(displacement, tick) で割りますが、比率が大きいだけでは吸収を確立したり、参加者を特定したりすることはできません。

確認されたHIGHでは、extreme_i+1からconfirmed_atまでの活動が観測された反転期間に該当します。これを極値以前に蓄積されたボリュームとは区別し、極値バーを所有するセグメントを固定します。境界は確認時に明確になりますが、結果として得られる特徴は、以前の極値で既知であったかのように使用することはできません。

エントリー、ストップ、数量規則を固定したまま、確定時に同時刻比較のRVOLを追加する対照実験が考えられます。ボラティリティ別のグループで純利益を改善するのか、スプレッドの広い速い足を選ぶだけなのかを調べます。完了取引だけの報告で機会数の変化を隠さないよう、却下シグナルと出来高欠損も残します。

テストの感度と初期化効果

1.5、2、3など少数のq候補を事前登録し、開発用データだけで選んで最終テスト前に固定します。イベント数、ポジションを持たない時間、足数とATR単位で測る確定遅延、ストップを飛び越えるギャップの頻度を報告します。q=2.03でしか成立せず2.0や2.1で消える成績は、追加調査が必要です。

プレフィックスリプレイでは、現在の暫定極値が移動している間も、発信されたすべてのHIGHとLOWを保持する必要があります。各イベントごとに、状態、極値のタイムスタンプ、A_ref、およびしきい値を保存します。リプレイを早めに開始すると、初期化とウォームアップに対する感度がテストされます。そうしないと、任意の最初の方向が予期せず長い履歴セクションに影響を与える可能性があります。

異なる登録モデルとして、固定閾値と連続適応閾値を比較します。また、固定閾値が静穏期間後に多くのイベントを発生させる可能性のある高変動性遷移と、イベントがほとんど発生しない静穏な遷移についても検証します。これらの診断は挙動を説明するものであり、リターンを見てから好ましいレジームを選択することは、新たな研究試行を導入することになります。

よくある落とし穴

未完成の最終セグメントからの取引

暫定エンドポイントは移動する可能性があります。確定済みの履歴シグナルストリームには含めないでください。

将来のATRは、以前のスイングを改善します

後々の変動から古いしきい値を再計算するのではなく、同時期の参照値ATRを保存します。

都合よくヒゲと終値を使い分ける

極値を魅力的に見せるときはヒゲを使い、ストップを避けたいときは終値を使うと、情報と執行の規則が不整合になる。

この手法を使う前のチェックリスト

ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。

0/8 項目

よくある質問

ATR ジグザグは、パーセンテージ ジグザグよりも優れていますか?

実証が必要な仮説です。ATRは尺度を調整する一方、参照期間、平滑化方法、閾値を固定する方針という追加の選択も導入するため、それらを検証します。

HIGHの確定後、価格がさらに高値を更新することはありますか?

はい。HIGHとは、検出器のルールに基づいて完了した局面を表すものであり、市場の最終的な天井や確実な下落予測を示すものではありません。

研究資料

各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。

  1. The Theory of Intrinsic Time: A PrimerJames B. Glattfelder and Richard B. Olsen. 方向転換と複数の尺度に関する内容を確認。本記事のATR版のバックテストではない。 確認日: .
  2. Zigzag indicatorTradingView. 構成方法、暫定ピボット、最終区間の制約を確認。 確認日: .
  3. Average True RangeTradingView. トゥルーレンジと平滑化の選択を確認。 確認日: .

関連する手法

リスクについて

この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.

実際の資金を使う前にルールを検証する

アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。

App StoreでBacktestをダウンロード