テクニカルEA化

ボリンジャーバンド幅でレンジ判定をEAに入れる

「今の相場はレンジかトレンドか」——EA設計で難しい問いの一つ。

ボリンジャーバンドの「バンド幅」は、レンジ判定の手がかりになる。バンドが狭い=ボラが低い=レンジの可能性が高い。

結論

バンド幅(上バンド − 下バンド)が狭いとき、相場はレンジにある可能性が高い。

ただし「狭さ」は相対的で、銘柄・時間足・相場で基準が変わる。固定閾値より、過去N本の平均バンド幅と比較する方法が実用的。

なぜEA運用で重要か

レンジ用の逆張りEAをトレンドで動かすと損失が膨らむ。トレンド用の順張りEAをレンジで動かすとダマシに振られる。

バンド幅はADXとは別のアプローチでボラの状態を把握できる。ADXと組み合わせて二重フィルターにもできる。

仕組み・条件

MQL5での実装例

int bb_handle = iBands(_Symbol, PERIOD_H1, 20, 0, 2, PRICE_CLOSE);
double upper[], lower[];
CopyBuffer(bb_handle, 1, 0, 1, upper); // 上バンド
CopyBuffer(bb_handle, 2, 0, 1, lower); // 下バンド
double bandwidth = upper[0] - lower[0];

// 過去20本の平均バンド幅と比較
double upper_arr[20], lower_arr[20], avg = 0;
CopyBuffer(bb_handle, 1, 0, 20, upper_arr);
CopyBuffer(bb_handle, 2, 0, 20, lower_arr);
for(int i = 0; i < 20; i++) avg += (upper_arr[i] - lower_arr[i]);
avg /= 20;

bool is_range = bandwidth < avg * 0.8; // 平均の80%以下なら「狭い」

%B との違い

バックテストやリアル運用で壊れるポイント

どう確認するか

  1. バンド幅フィルターなし/ありで比較する
  2. 閾値は固定値ではなく過去N本の平均との比率で設定する
  3. フィルター後の取引回数が極端に減っていないか確認する
  4. スクイーズ後のブレイクで大損するケースがないか確認する
  5. ADXフィルターと組み合わせた改善効果を比較する

自分の検証スタンス

バンド幅は「レンジの可能性が高い場面」の手がかりとして使う。確実な判定ではなく確率的なフィルターという位置づけ。

過去20本の平均との比較を基本にする。固定閾値は銘柄ごとに調整が要り、管理が煩雑になるため。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。テクニカル指標を使ったレンジ判定は確率的なものであり、100%の精度を保証するものではありません。