テクニカルEA化
ボリンジャーバンド幅でレンジ判定をEAに入れる
公開 2026.06.16最終確認 2026.06.16
「今の相場はレンジかトレンドか」——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 との違い
- %B → 価格がバンドのどこにあるか(エントリーポイントの判断)
- バンド幅 → バンドがどれだけ開いているか(相場環境の判断)
バックテストやリアル運用で壊れるポイント
- 固定閾値で判定 → 銘柄・時間足が変わると通用しない
- 「狭い=レンジ」と確信 → スクイーズ直後のブレイクで逆張りが大損
- バンド期間を最適化しすぎる → 過剰最適化
- バンド幅だけで判定 → ADXや出来高も併用したい
どう確認するか
- バンド幅フィルターなし/ありで比較する
- 閾値は固定値ではなく過去N本の平均との比率で設定する
- フィルター後の取引回数が極端に減っていないか確認する
- スクイーズ後のブレイクで大損するケースがないか確認する
- ADXフィルターと組み合わせた改善効果を比較する
自分の検証スタンス
バンド幅は「レンジの可能性が高い場面」の手がかりとして使う。確実な判定ではなく確率的なフィルターという位置づけ。
過去20本の平均との比較を基本にする。固定閾値は銘柄ごとに調整が要り、管理が煩雑になるため。
参照した公式情報
免責
本記事は個人の検証メモであり、投資助言ではありません。テクニカル指標を使ったレンジ判定は確率的なものであり、100%の精度を保証するものではありません。