記事の目次
根拠と適用範囲
コアとなる定義は、プラットフォームおよびチャートプロバイダーのドキュメントと照合して確認しました。以下の組み合わせフィルター、傾斜正規化、パーセンタイル閾値は、独自の調査提案です。この指標の組み合わせに関する新たなバックテスト結果や利益に関する主張は提供していません。
実践の流れ
- データを整列させるOHLC、ベンチマーク値、および可用性タイムスタンプを同期します。
- 特徴量を計算する固定の ATR、傾き、ADX、および RS 式を使用します。
- ウォーミングアップを確認する履歴データが不十分な場合は、ゼロを捏造するのではなく、NAを返す。
- コンテキストをフィルタリングする元の検出器信号の直前に保存されたスナップショットを使用します。
- 付加価値を測定するサンプル外で個々のフィルターとボリュームの相互作用を評価する。
各特徴量が実際に測るもの
ATRはギャップを含む値幅を測り、方向の符号を持ちません [1]。ADXはトレンドの強さを測り、+DIと−DIが方向情報を補います [2]。本稿の相対的強さは資産価格をベンチマーク価格で割った比率です [3]。RSIは資産自体の価格変化から計算する別のオシレーターであり、このベンチマーク比較ではありません。
これらの機能は、それぞれ異なる質問に答えるものです。提案されたストップロスは通常の動きに比べて大きいか、長期的な方向性は上昇か下降か、動きはトレンドとして認識されるほど持続的か、そして資産はベンチマークを上回るパフォーマンスを示しているか、といった点です。複数の好ましい数値が出たとしても、必ずしも独立した証拠になるとは限りません。なぜなら、これらの指標は共通の価格入力に基づいているからです。
既存の検出器が参照できる、変更不能な市場環境のスナップショットを作ることが実装の目的です。フィルターを試すときは元のシグナル、ポジションサイズ、決済規則を維持します。そうしないと結果の改善を追加情報だけの効果と特定できません。
数式と情報伝達のタイミング
TR[t]=max(H[t]−L[t],|H[t]−C[t−1]|,|L[t]−C[t−1]|)。ATR14 を最初の 14 個の有効な TR 観測値の平均値でシードし、ATR[t]=(13ATR[t−1]+TR[t])/14 を更新します。提案された正規化 ATR は、C>0 の場合、nATR=100ATR/C です。現在の nATR を、先行する 252 の有効な観測値と比較して pATR を計算します。現在の観測値をその履歴セットから除外します。必要な履歴がない場合は NA を返します。
提案された移動平均の傾きは s=(SMA50[t]−SMA50[t−10])/(10ATR14[t]) で、バーあたり ATR 単位で測定されます。分母がゼロ ATR の場合は NA を返します。傾きが正であっても価格が平均を上回っているとは限らないため、これらは別々の特徴量として保持します。平均のパーセント変化は別の正規化です。
方向移動の場合は、UpMove=H[t]−H[t−1] と DownMove=L[t−1]−L[t] を使用します。UpMove>DownMove と UpMove>0 の場合のみ +DM=UpMove を設定し、それ以外の場合はゼロに設定します。−DM を対称的に定義します。同点の場合は両方ともゼロに設定します。Wilder RMA14 を DM と TR に適用します。+DI=100RMA(+DM)/ATR も同様に −DI にも適用します。DX=100|+DI−−DI|/(+DI+−DI); ADX=RMA14(DX)。シードとウォームアップ ポリシーを宣言します。有効なウォームアップ後に両方の DI 値がゼロの場合は、この実装で DX=0 を使用します。
RS[t]=P[t]/B[t]、ベンチマークBはプラスです。n回の観測における相対パフォーマンスはrel_n=RS[t]/RS[t−n]−1です。名目株価が異なるため、絶対RSで銘柄をランク付けしないでください。PとBは、単に日付を一致させるのではなく、値が利用可能になった時点で結合してください。後から終了するベンチマークでは、以前の市場の注文をフィルタリングすることはできません。
提案する買い側の環境フィルターは、バーtの終値で出るセットアップに対しt−1のスナップショットを使います。条件はC>SMA50、slope>0.02、ADX≥20、rel20>0、そしてpATRが0.20から0.80の範囲内で両端を含むことです。この一つのバー分の隔たりは明示的な設計選択です。バーtの確定済み特徴量を、その後に送信する注文に使う方法も未来情報なしで実装できますが、別の設定として扱います。
ATR がゼロまたは使用不可の場合、この実装案では DI、DX、および ADX に対して NA を返します。ゼロ除算は行わないでください。DX=0 の規則は、ATR が正で、かつ両方向成分がゼロである有効なウォームアップの後でのみ適用されます。
after close t, save immutable feature snapshot:
nATR=100*ATR14[t]/C[t]
pATR=count(past_252_nATR<=nATR)/252
slope=(SMA50[t]-SMA50[t-10])/(10*ATR14[t])
rel20=(P[t]/B[t])/(P[t-20]/B[t-20])-1
# Proposed LONG filter: use snapshot t-1 for a setup emitted at close t.
context_ok = C[t-1]>SMA50[t-1] and slope[t-1]>0.02
context_ok &= ADX14[t-1]>=20 and rel20[t-1]>0
context_ok &= 0.20<=pATR[t-1]<=0.80
# The filter enables the original detector; it does not submit orders.
変動性と出来高を分離する
ATRとADXは売買出来高を測りません。ブレイクアウトにRVOLを加えるときは、ボラティリティとトレンドの条件を固定して出来高情報の追加効果を推定します。一つのニュースでATRと出来高が同時に増えることもあるため、指標が一致しても独立した情報源とは限りません。
簡潔な実験では、まず価格検出器から始め、各コンテキスト機能を個別に追加し、次にRVOLとの相互作用をテストします。pATRフィルターがニュースセッションと大きなブレイクアウトを同時に除外する場合、ドローダウンの減少、逃した利益、および機会カバレッジの減少を報告します。
結合モデルに対して、欠損データに関するポリシーを明示的に規定してください。有効な ATR と欠損値 RVOL が同時に存在する場合でも、活動がゼロであることを意味するものではありません。また、欠損ベンチマークが存在する場合でも、相対的な強度が中立であることを意味するものではありません。実際に観測された値が閾値に満たなかったために拒否された行とは別に、利用できない特徴行を追跡してください。
計算過程と誤解を招く事例
合成例:資産価格 P は 20 回の観測で 100 から 110 に上昇し、ベンチマーク B は 200 から 210 に上昇します。RS は 0.5 から 0.52381 に増加し、rel20=4.7619% となります。これは、5 パーセント ポイントとなるリターンを差し引く場合とは異なります。ATR=2.5 の場合、nATR は約 2.273% となります。
SMA50 は 10 バーにわたって 103 から 105 まで上昇するため、バーごとに slope=2/(10×2.5)=0.08 ATR となります。ADX=28、pATR=0.60、C=110>SMA50=105 の場合、提案されたコンテキストフィルタは合格です。終値 t の信号の場合、これらの値は宣言された t−1 スナップショットに属している必要があり、都合が良いという理由で選択された後の観測値に属していてはなりません。
誤解を招くケースでは、P が 100 から 95 に下落し、B が 200 から 180 に下落します。相対パフォーマンスは +5.5556% ですが、資産は絶対値で 5% の損失を被ります。SMA50=100 で傾きが負の場合、提案されたロングフィルターはそれを拒否します。強い下落中の高い ADX も買いシグナルを生成しません。
これらは数式と論理チェックであり、過去の利益や損失の取引データではありません。インジケーターチャートはRSを初期値100に正規化します。資産価格が下落してもRSは上昇する可能性があります。ボリューム配列がゼロということは、取引活動がゼロだったという意味ではなく、その描画にボリュームが適用されないことを意味します。
検出器で特徴量を使う方法
この機能セットには、独立したエントリー、保護ストップ、またはエグジットはありません。ダブルボトム、VCP、またはブレイクアウト検出器に接続されている場合、その検出器の取引ルールが維持されます。フィルタは、コンテキストが適格かどうかのみを判断します。2ATRストップを導入すると、独自の比較を必要とする追加の戦略決定が発生します。
データアライメントは、別の指標を追加することよりも重要です。タイムゾーン、取引所セッション、updated_at、フィード遅延、およびas-of結合ルールを保存します。不一致の祝日を通じてベンチマークを無期限に前方補完しないでください。明確な陳腐化制限を設定し、陳腐化した観測値によって候補を拒否するか、利用不可としてマークするかを決定します。
長期の相対的強さを比べる場合は、価格リターンか配当込みのトータルリターンを一貫して使います。資産だけ配当調整し、ベンチマークから配当を除けば比較が変わります。通貨換算には判断時点で利用できた為替レートを使います。先物価格が正でない場合、ATR/Cはここで定義した尺度にはなりません。ティックや契約単位に基づく代替尺度を別に定義する必要があります。
戦略を変更せずにフィルターをテストする
コストとポジションサイズを一定にし、同じ基本戦略に各フィルターを加えて比較します。取引数、純期待値、ドローダウン、相場状況別の機会カバー率を報告します。ADX20、slope0.02、二十〜八十パーセンタイルの帯は提案パラメータです。開発用データで選び、最終評価前に固定します。
ギャップ、インサイドバー、上下の方向性変化が同値になる場合、初期化期間の境界を含む系列を手計算し、ライブラリのATR・ADXと比較します。初期値によって序盤の値は大きく変わります。将来のバーを追加しても、以前の時点までに出力した特徴量を変えてはいけません。
RSについては、市場の閉場時間が異なる資産とベンチマークをテストします。休日による不一致、古いベンチマーク値、通貨換算、分母の欠落なども考慮に入れます。pATRについては、同点をテストし、規定された等以下順位付け規則を検証します。感度分析は、あらかじめ宣言された小さなグリッド内で変動させるべきであり、1つの組み合わせが利益を生むまで際限なく探索するべきではありません。
よくある落とし穴
プラスの相対力は価格上昇として扱われる
資産は、単に下落幅が小さいだけで、ベンチマークを上回るパフォーマンスを発揮できる。
重複する指標は独立した証拠としてカウントされる
移動平均線の傾き、ADX、およびモメンタムは、同じ根本的な価格変動を説明する可能性があります。
取引終了時刻の遅いベンチマーク
同日終値が意思決定時点で入手できない場合があり、先読みバイアスが生じる可能性がある。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
先物価格がマイナスの場合でも、正規化されたATRを使用できますか?
ATR/C の定義では、この方法は使えません。別途定義されたティックまたは契約スケールの尺度を使用してください。絶対値の分母を使用しても、全く同じ解釈は維持されません。
この相対的な強さは、IBD RSレーティングのことでしょうか?
いいえ。これは、選択されたベンチマークに対する価格比率と、その時間経過に伴う変化を示すものです。独自の格付けや、クロスセクションユニバースパーセンタイルは、別の指標です。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Average True Range — TradingViewTradingView. トゥルーレンジの計算式、平滑化、およびボラティリティの解釈。 確認日: .
- Average Directional Index — TradingViewTradingView. ADXと方向性変化の構成要素を参照しました。本稿のフィルターの優位性を証明する資料ではありません。 確認日: .
- Price Relative / Relative Strength — ChartSchoolStockCharts. 資産価格とベンチマーク価格の比率。出典となるグラフ例は掲載していません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード