テクニカルEA化

トレンドか、レンジか。EAにとって最も難しく、最も重要な判定

相場がトレンドかレンジかを判定することは、EAの成績を左右する最大の要因。ADX、ボリンジャーバンド幅、移動平均の傾きなど、EAに「今の相場環境」を認識させるアプローチを整理する。

EA開発をしていると、最終的に一つの巨大な壁にぶち当たる。

「トレンド相場」と「レンジ相場」の判定だ。

トレンドフォロー型のEAを作れば、大相場で大きく伸びたを出すが、レンジ相場で往復ビンタを食らって資金を溶かす。
レンジ逆張りのEAを作れば、平穏な相場でコツコツ稼ぐが、強いトレンドが発生した日に逆張りし続けて口座が飛ぶ。

「今はトレンドだから、逆張りEAは停止しよう」
「今はレンジだから、トレンドフォローEAは停止しよう」

これができれば苦労はしない。
しかし、「今がどちらの相場か」をEAに(リアルタイムで)正確に判定させるのは、至難の業だ。

なぜ判定が難しいのか

後から過去のチャートを見れば、誰でも「ここはレンジだね」「ここからトレンドだね」とわかる。

しかし、EAは常に「チャートの一番右側(現在)」で判断しなければならない。
レンジのブレイクアウトに見えたローソク足がダマシで戻ってくるかもしれないし、緩やかなレンジに見えて実はジリジリとトレンドが始まっているかもしれない。

100%正確な判定は不可能だ。
だからEA開発では、「100%当てること」ではなく、「致命傷を避ける程度の確度でフィルタリングすること」を目指す。

私が検証で使う「環境認識フィルター」

一つの指標に頼ると判断を誤りやすいため、私はいくつかの指標を組み合わせて「トレンドの可能性が高い状態」を定義している。

1. ADX(平均方向性指数)
最もポピュラーなトレンド判定指標。
「ADXが25以上ならトレンド相場、25未満ならレンジ相場」といった具合に使う。ただし、反応が遅い(トレンドがかなり進行してから上昇する)という弱点がある。

2. ボリンジャーバンド幅(BandWidth)
ボリンジャーバンドの+2σと-2σの間の幅(pips)を計算する。
幅が拡大していればボラティリティが高くトレンドの可能性あり、狭く横ばいならレンジ相場とみなす。視覚的にもわかりやすい。

3. 移動平均線の傾きと乖離
長期の移動平均線が明確な傾き(差分)を持っており、かつ短期・中期・長期の間隔が開いている(パーフェクトオーダーの初期段階)ならトレンドとみなす。

複数のフィルターを「合議制」にする

どれか一つだけではダマシに遭うため、EAの中で「合議制」にする。

「ADXが25以上」かつ「移動平均線の傾きが一定以上プラス」の時だけ、トレンドフォローロジックを有効にする。
逆に「ADXが20未満」かつ「ボリンジャーバンド幅が縮小している」時だけ、レンジ逆張りロジックを有効にする。

両方の条件がチグハグな時(ADXは高いがボリバン幅は狭いなど)は、「よくわからない相場」として何もしない(休む)。

この記事のメモ

「すべての相場で勝てる魔法のロジック」を探すのは、EA開発における一番の遠回りだ。

相場環境が変われば、機能するロジックも変わる。野球で言えば、速球に強いバッターと変化球に強いバッターがいるのと同じだ。

大事なのは、バッター(ロジック)の能力を上げることよりも、「今、ピッチャーが何を投げようとしているか(相場環境)」を予測する精度を上げること。

トレンドとレンジの判定フィルターをいかに精緻に、かつ過剰最適化にならずに作るか。
EAの優劣は、エントリーロジックの複雑さではなく、この「環境認識フィルター」の質で決まる。

チェックリスト

FAQ

Q: ADXの閾値は「25」で固定でいいですか?
一般的な目安は25ですが、銘柄や時間足によってボラティリティが違うため、バックテストで「20」や「30」での挙動を検証する必要があります。

Q: トレンド判定フィルターを入れると勝率は上がりますか?
無駄な負けトレード(レンジでの被弾など)が減るため、勝率やPFが改善する可能性は高いです。ただし、フィルターで削られるトレードの中には「実は勝てていたトレード」も含まれるため、全体の期待値(利益総額)がどう変化したかを確認してください。

免責

本記事は個人の検証メモであり、投資助言ではありません。100%正確に相場環境を判定できる指標は存在せず、想定外の損失が発生するリスクは常にあります。