ADXを売買方向のシグナルではなく、トレンドフォロー戦略を稼働させるための強度フィルターとして活用する方法を解説。DIとの役割分担、閾値設計、MT5 EAへの実装、バックテスト時の注意点まで整理します。
方向シグナルだけではレンジ相場を避けられない
移動平均クロスや高値ブレイクなどのトレンドフォロー戦略では、価格の方向を判定できても、その動きに継続性があるかまでは分からない。特に値幅の小さいレンジでは、買いと売りのシグナルが短期間に反転し、連続した損切りにつながりやすい。
ADXはAverage Directional Indexの略で、価格が上昇しているか下落しているかではなく、現在のトレンドがどの程度強いかを測る指標である。この性質を利用すると、エントリー方向を決める指標ではなく「トレンド戦略を稼働させる環境か」を判断するフィルターとして利用できる。
ADX単体から買い・売りを判断しない
ADXは0から100の範囲で推移し、一般的には25を上回ると比較的強いトレンド、20を下回ると方向感の乏しい状態として参照されることが多い。ただし25という数値は絶対的な境界ではなく、銘柄や時間足によって検証が必要である。
重要なのはADXが高いこと自体は上昇を意味しない点だ。下落トレンドが強まっている場合でもADXは上昇する。
方向を見る場合はDirectional Movement Indexの+DIと-DIを組み合わせる。+DIが-DIを上回れば上方向のDirectional Movementが優勢、逆なら下方向が優勢と解釈できる。
つまり「方向はDIや別のシグナル、強度はADX」と役割を分ける方が設計しやすい。
閾値だけでなく傾きを条件にする
単純なルールとしては、ADXが25以上の場合だけ移動平均クロスを許可する方法が考えられる。しかしADXが高くても既にピークアウトし、トレンドが弱まり始めている場合がある。
そこで、ADXの絶対値に加えて傾きを条件にする。
例えば「ADXが20以上かつ直近3本で上昇」「ADXが25以上で前バーより高い」といった条件である。これにより、完成した強いトレンドだけではなく、トレンド強度が拡大している局面を検出できる。
一方、ADXが高水準でも低下が続いている場合は、新規エントリーを抑制する設計も可能だ。
MAやブレイクアウトの前段に配置する
EAではADXを直接エントリートリガーにするより、Market Regime Filterとして配置すると扱いやすい。
例えば、まずADXによってTrendingまたはRangeを判定する。Trendingの場合のみ、移動平均クロス、Donchian Breakout、BOSなど本来の売買ロジックを評価する。Rangeと判定された場合は新規エントリーを停止する。
この構造なら、ADXフィルターを外した場合との比較も容易になる。シグナル生成と相場環境判定を分離できるため、戦略全体のどこに優位性があるのかを検証しやすい。
MT5ではADXとDIを別バッファから取得する
MQL5ではiADXを利用してADXを取得できる。インジケーターバッファはMAIN_LINEがADX、PLUSDI_LINEが+DI、MINUSDI_LINEが-DIに対応する。
EAでは確定足の値を利用し、ADXの閾値、変化率、+DIと-DIの位置関係を個別の条件として管理する。形成中の足だけで判定すると、ティックごとに条件が変化するため、バックテストと実運用のシグナル差にも注意が必要である。
閾値の最適化より安定性を確認する
ADXフィルターを検証するとき、20、21、22と細かく最適化して最も利益が高い値だけを採用すると過剰最適化になりやすい。
例えばADX 20〜30の複数設定でProfit Factor、最大ドローダウン、取引回数、平均損益を比較し、広い範囲で改善しているかを確認する。さらに複数銘柄、異なる期間、Out-of-Sampleでも効果が維持されるかを見ることが重要である。
まとめ
ADXの役割は売買方向を当てることではなく、現在の値動きにトレンドとしての強さがあるかを評価することにある。
移動平均やブレイクアウトなどで方向を判断し、ADXで相場環境をフィルタリングすることで、レンジ局面での不要なシグナルを抑制できる可能性がある。EAではADX、DI、売買シグナルを別レイヤーとして実装し、固定的な閾値ではなく複数期間・複数銘柄で安定性を検証することが重要になる。







