ボリンジャーバンドとATRを組み合わせる考え方 — ボラティリティを二重で観察する設計
ボリンジャーバンドもATRも、どちらも「ボラティリティ」を扱う指標として知られていますが、見ている側面は実は異なります。ボリンジャーバンドは一定期間の終値の 散らばり(標準偏差) を可視化する指標であり、ATRは一本一本のローソク足の 値幅(High-Lowを含む真の値幅) を平均化する指標です。同じ「ボラティリティ」でも切り口が違うため、組み合わせると相場の状態を多角的に観察しやすくなります。
本記事では、ボリンジャーバンドとATRを併用する考え方と、cBotとして組み込む際に意識したい実装上の注意点を整理します。あくまで「設計の参考」としての位置づけであり、特定の数値が成果を保証するという話ではありません。
ボリンジャーバンドの役割
ボリンジャーバンドは、移動平均線(中心線)の上下に終値の標準偏差を一定倍(通常±2σ)取って描かれる3本の線です。詳細はボリンジャーバンドとは何を測る指標かにまとめていますので、必要に応じて参照してください。
単独利用での代表的な観察は、バンド幅の収縮(スクイーズ)と拡張(エクスパンション)、そして±2σへのタッチ・突き抜けです。スクイーズはボラティリティが落ちている局面、エクスパンションは値動きが大きくなっている局面を示すと一般的に解釈されます。
ただし、ボリンジャーバンドは終値ベースの標準偏差を取るため、長いヒゲを伴う一本値の急変動はバンド幅にすぐ反映されない場合があります。また、強いトレンド相場では価格がバンドに沿って張り付き、±2σを「反転点」と素直に解釈すると逆張りシグナルが連発しやすい性質もあります。「散らばりの大きさ」を測ってはいるが、「いま発生している一本の値幅」を直接は測っていない、という点が単独使用時の限界として残ります。
ATRの役割
ATR(Average True Range)は、各ローソク足の真の値幅(True Range)を一定期間で平均化する指標です。詳細はATRとは何を測る指標かを参照してください。
ATRが捉えるのは「いま一本ごとにどれくらい動いているか」です。終値だけでなく高値・安値・前足終値を考慮するため、ヒゲを伴う急変動にも素直に反応します。ストップロス幅やポジションサイズ計算の基準として使われることが多く、ボラティリティに応じて損切り幅を調整する設計の核になります。
一方、ATRは「方向」を示しません。値が大きいから上昇するわけでも下降するわけでもなく、単に値幅が広いという情報しか含まれていません。また、終値の散らばり(標準偏差)を直接は表現しないため、トレンドが穏やかでも一本ごとに大きく動く相場と、トレンドが強く一方向に伸びる相場の区別はATR単独では付けにくくなります。
なぜこの組み合わせか
ボリンジャーバンドとATRは、同じ「ボラティリティ」というキーワードで括られながら、観察対象の粒度が異なります。バンド幅は 一定期間の終値ベースの散らばり を表し、ATRは 一本ごとの値幅の平均 を表します。粒度が違うため、両者を並べると相場の状態についての情報量が増えます。
考え方の例を挙げます。
- バンド幅が収縮 + ATRも低下 → 静かな停滞局面と判定する材料
- バンド幅が拡張 + ATRも上昇 → ボラティリティ拡大局面と判定する材料
- バンド幅は収縮しているがATRが上昇 → 散らばりは小さいが一本ごとの振れは大きい、ノイズが乗りやすい局面と判定する材料
- バンド幅は拡張しているがATRは横ばい → 終値ベースで一方向に押し出している、トレンドの可能性を疑う材料
このように、片方だけ見ていたら一括りで「ボラティリティ高/低」と扱ってしまう局面を、もう一方の指標で分解できる点に意義があります。一般論として、相場の状態判定をより細かい粒度で行うためのノイズフィルターとして機能することが期待できます。
注意点として、両者とも遅行性を持つ指標です。リアルタイムで状態が切り替わった瞬間を即座に捉えるためのものではなく、「いまどんな状態が継続しているか」を観察する材料として扱うほうが実用的です。組み合わせれば即座に成果が出るロジックになる、という性質のものではない点は最初から織り込んでおくと、運用上の期待値ズレを起こしにくくなります。
パラメータをどう考えるか
唯一の正解があるわけではなく、検証して自分の運用時間軸に合うものを選ぶ前提で、方向性だけ整理します。
ボリンジャーバンドの期間と乗数 は、期間20・乗数±2σが標準です。期間を短くすれば反応は早くなりますがノイズも拾いやすく、乗数を大きくすればタッチ頻度は減ります。短期スキャル寄りなら期間10前後、スイング寄りなら期間20〜50を検討する形が一般的とされています。
ATRの期間 は標準が14です。短くすれば直近の値幅変化に敏感になり、長くすれば平準化が進みます。スキャル寄りなら7〜10、スイング寄りなら14〜21といった調整が検討されます。
時間足の組み合わせも設計要素です。上位足のバンド幅で大局のボラティリティ局面を判定し、下位足のATRで一本ごとの動きを観察する マルチタイムフレーム 構成にすると、状態判定の安定性とタイミング検知の機動性を両立しやすくなります。いずれの場合も、過去データでバックテストして自分の運用環境での挙動を確認するプロセスを省略しないことが重要です。
cBot化する際の考慮点
cTraderのcBotとして実装する場合、設計面でいくつか押さえておきたいポイントがあります。
データ取得タイミング: OnBar(確定足)で判定するのか、OnTickで判定するのかを最初に決めます。バンド幅・ATRはどちらも複数本のデータを使う指標のため、確定足ベースで運用するのが安定しやすいです。ティックベースで毎回再計算すると同一バー内で値がぶれるため、判定は確定済みバーで行う設計が無難です。
計算順序の依存関係: ボリンジャーバンドとATRは互いに独立して計算できますが、バー数が不足している起動直後は LastValue がNaNを返す場合があります。判定ロジックを走らせる前にnull/NaNチェックを入れるのが安全です。バンド幅は (Top.LastValue - Bottom.LastValue) で算出し、必要に応じて中心線で割って正規化すると、銘柄横断で扱いやすくなります。
状態判定のヒステリシス: バンド幅やATRは閾値前後でフラグが頻繁に切り替わりやすい指標です。「拡張中」「収縮中」のフラグが一本ごとに反転すると判定がノイジーになります。直近N本の連続条件を満たしたら状態を切り替える、といったヒステリシス設計を入れると安定します。
簡単な疑似コード断片を挙げます。
// 例: バンド幅とATRを同時に観察する
var bb = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
var atr = Indicators.AverageTrueRange(14, MovingAverageType.Simple);
double bandWidth = bb.Top.LastValue - bb.Bottom.LastValue;
double atrValue = atr.Result.LastValue;
if (double.IsNaN(bandWidth) || double.IsNaN(atrValue)) return;
double normalizedBand = bandWidth / bb.Main.LastValue; // 中心線で正規化
// normalizedBand と atrValue を組み合わせて状態フラグを更新
実装初期は、バンド幅とATRの値を毎バーログ出力しておくと、後からチャート上の動きと突き合わせて検証しやすくなります。
実装の流れ
ロジックをcBotに落とし込むときの全体像を、入力→計算→判定→出力の流れで整理します。
- 入力: 監視する銘柄・時間足を決め、
Barsから終値・高値・安値・前足終値の系列を取得する - 計算: ボリンジャーバンドとATRを別々に計算し、最新値・1本前の値・直近N本の平均などを取得する
- 判定:
- バンド幅状態: 拡張中 / 収縮中 / 中間
- ATR状態: 上昇中 / 低下中 / 横ばい
- 両者の組み合わせから、現在の相場状態フラグを決定
- 出力: 状態フラグ(EXPANSION / SQUEEZE / MIXED など)を、ログまたは外部ダッシュボードに送る
この設計はエントリーシグナルそのものではなく、状態判定レイヤー として実装すると応用が利きます。トレンドフォロー系・逆張り系の別ロジックを上に乗せ、状態フラグを前提条件として参照する構造にしておくと、後から戦略を差し替えやすくなります。
どう活用するか
この設計図は、目的別に活用できます。
自作派の方は、Claude Code を使った cBot 開発時の状態判定モジュールの設計書として、本記事の節構造をそのまま流用してみてください。委託派の方は、ai-programming.xyz への開発相談時に「ボリンジャーバンドとATRの両方で状態判定したい」という前提を共有しておくと、要件詰めがスムーズになります。教育派の方は、スクールでの実践課題のテーマとして、本記事の状態判定ロジックを自分の手で実装してみる演習に使えます。
ボリンジャーバンドとATRの組み合わせは、「同じカテゴリの指標でも切り口が違えば情報が増える」という設計思想を学ぶ題材としても有用です。ここで身につけた粒度の使い分けは、より複雑な組み合わせ(ボリンジャー + ATR + ADX など)へ拡張するときの土台になります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。