RSIとボリンジャーバンドを組み合わせる考え方 — 偏りと散らばりを並べる設計
RSI(相対力指数)もボリンジャーバンドも、それぞれ単体で古くから広く使われてきた定番のインジケーターですが、観察している対象は別物です。RSIは一定期間の上昇幅と下落幅のバランスから 値動きの偏り(モメンタム) を0〜100で数値化し、ボリンジャーバンドは終値の標準偏差を可視化して 散らばり(ボラティリティ) とそこに対する価格の相対位置を観察します。系統が違うため、組み合わせるとシグナルの整合性を多角的に判定する材料が増えます。
本記事では、RSIとボリンジャーバンドを併用する考え方と、cBotとして組み込む際に意識したい実装上の注意点を整理します。あくまで「設計の参考」としての位置づけで、特定の数値が成果を保証するという話ではありません。
RSIの役割
RSIは一定期間の上昇幅と下落幅のバランスを0〜100で数値化するオシレーター系のインジケーターです。基礎的な仕様はRSI(相対力指数)とはにまとめていますので、必要に応じて参照してください。
単独利用での代表的な観察は次のとおりです。
- 70以上 / 30以下の閾値: 70以上は買われすぎ、30以下は売られすぎという判定材料
- 50ラインの上抜け/下抜け: 方向感のスイッチを観察する材料
- 価格との逆行(ダイバージェンス): モメンタム鈍化の検知材料
ただし、RSIは「値動きが上下のどちらに偏っているか」を答える指標であり、「いま相場がレンジなのかトレンドなのか」までは直接答えません。強いトレンド相場では70以上または30以下に張り付いて反転シグナルを連発し、レンジ相場では中央付近をうろついて判断材料が薄くなる、という両端での弱点があります。RSI単独では「相場の状態」と「シグナルの位置づけ」がひとまとめに扱われるため、背景となる相場状態を別の指標で補ってあげたい場面が出てきます。
ボリンジャーバンドの役割
ボリンジャーバンドは、移動平均線(中心線)の上下に終値の標準偏差を一定倍(通常±2σ)取った3本の線です。詳細はボリンジャーバンドとは何を測る指標かを参照してください。
単独利用での代表的な観察は、バンド幅の収縮(スクイーズ)と拡張(エクスパンション)、そして±2σへのタッチや突き抜けです。スクイーズはボラティリティが落ちている局面、エクスパンションは値動きが大きくなっている局面と一般的に解釈されます。
ただし、ボリンジャーバンドは「散らばりの大きさ」と「中心線からの距離」を見る指標で、「いま値動きがどちらに偏っているか」を直接は数値化しません。±2σにタッチしたという事実は「散らばりの外縁にいる」という情報であり、買われすぎ・売られすぎの強弱を一意に答えるわけではありません。また、強いトレンド相場では価格がバンドに沿って張り付き、±2σへのタッチを「反転点」と解釈すると逆張りシグナルが連発しやすい性質も残ります。
なぜこの組み合わせか
RSIが答えるのは「値動きが上下のどちらに偏っているか(モメンタム)」であり、ボリンジャーバンドが答えるのは「終値の散らばりがいまどのくらいか、価格はその散らばりの内・外どちらにいるか(ボラティリティと相対位置)」です。両者は系統が違うため、並べると情報量が増えます。
考え方の例を挙げます。
- 価格が+2σにタッチ + RSIが70以上 → 散らばりの外縁と買われすぎが整合的に観察される材料
- 価格が-2σにタッチ + RSIが30以下 → 散らばりの外縁と売られすぎが整合的に観察される材料
- 価格が+2σにタッチ + RSIは50付近 → 散らばりは外縁だが偏りは中立、強いトレンド継続局面の可能性を疑う材料
- 価格はミドル付近 + RSIは70以上 → 偏りは強いが散らばりの外縁ではない、シグナルの位置づけを慎重に扱う材料
- バンドがスクイーズ + RSIが中央停滞 → 状態としては停滞、シグナルが薄い局面と判定する材料
このように、片方だけ見れば一括りで「過熱」「反転点」と扱ってしまう局面を、もう一方の指標で粒度を分解できる点に意義があります。一般論として、シグナル整合性をフィルタするためのノイズ除去レイヤーとして機能することが期待できます。
注意点として、両者とも遅行性を持つ指標です。RSIは過去N本の終値の上昇下落バランス、ボリンジャーバンドは過去N本の終値とその標準偏差から派生する形で、リアルタイムで天井・底を当てるためのものではありません。「いまどんな偏りと散らばりが続いているか」を観察する材料として扱うほうが実用的です。組み合わせれば即座に判定精度が上がる、という性質のものではない点は最初から織り込んでおくと、運用上の期待値ズレを起こしにくくなります。
パラメータをどう考えるか
唯一の正解があるわけではなく、検証して自分の運用時間軸に合うものを選ぶ前提で、方向性だけ整理します。
RSIの期間 は標準が14です。短くすれば直近の値動き変化に敏感になり、長くすれば平準化が進みます。スキャル寄りなら7〜10、スイング寄りなら14〜21といった調整が一般的とされています。閾値は70/30が代表ですが、強いトレンド相場では80/20まで広げてフィルタを厳しくする使い方も検討されます。
ボリンジャーバンドの期間と乗数 は、期間20・乗数±2σが標準です。期間を短くすれば反応は早くなりますがノイズも拾いやすく、乗数を大きくすればタッチ頻度は減ります。短期スキャル寄りなら期間10前後、スイング寄りなら期間20〜50を検討する形が一般的とされています。
時間足の組み合わせも設計要素です。上位足のボリンジャーバンドで大局のボラティリティ局面と相対位置を把握し、下位足のRSIでタイミング寄りのモメンタムを観察する マルチタイムフレーム 構成にすると、状態判定の安定性とタイミング検知の機動性を両立しやすくなります。いずれの場合も、過去データでバックテストして自分の運用環境での挙動を確認するプロセスを省略しないことが重要です。
cBot化する際の考慮点
cTraderのcBotとして実装する場合、設計面でいくつか押さえておきたいポイントがあります。
データ取得タイミング: OnBar(確定足)で判定するのか、OnTickで判定するのかを最初に決めます。RSIとボリンジャーバンドはどちらも複数本の終値を使う指標で、未確定バーでは値が動き続けます。同一バー内で何度も閾値を跨いだように見える挙動を避けるため、確定足ベースで判定する設計が安定しやすくなります。
計算順序の依存関係: cTrader API では Indicators.RelativeStrengthIndex でRSIを、Indicators.BollingerBands でボリンジャーバンドを取得できます。両者は独立して計算できるため依存はありませんが、起動直後はバー数が不足してNaNが返る場合があります。判定ロジックを走らせる前にnull/NaNチェックを入れる設計が安全です。
閾値判定のヒステリシス: RSIの70/30境界も±2σタッチも、境界線前後で頻繁にフラグが切り替わると判定がノイジーになります。直近N本連続で条件を満たしたら状態を切り替える、過熱フラグが立ったあとは反対側まで戻ってからリセットする、といったヒステリシス設計を入れると安定します。RSIの過熱→中央回帰、バンドの外縁→中心線回帰、それぞれの「戻り」を観察するロジックに発展させやすいのもこの組み合わせの利点です。
簡単な疑似コード断片を挙げます。
// 例: バンドの相対位置とRSIの偏りを組み合わせて判定する
var bb = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
var rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14);
double upper = bb.Top.LastValue;
double lower = bb.Bottom.LastValue;
double price = Bars.ClosePrices.LastValue;
double rsiVal = rsi.Result.LastValue;
if (double.IsNaN(upper) || double.IsNaN(rsiVal)) return;
bool upperTouch = price >= upper;
bool lowerTouch = price <= lower;
bool overbought = rsiVal >= 70;
bool oversold = rsiVal <= 30;
// 散らばりの外縁と偏りが整合しているかをフラグ化
実装初期は、RSI値・上下バンド・価格を毎バーログ出力しておくと、後からチャート上の動きと突き合わせて検証しやすくなります。
実装の流れ
ロジックをcBotに落とし込むときの全体像を、入力→計算→判定→出力の流れで整理します。
- 入力: 監視する銘柄・時間足を決め、
Barsから終値の系列を取得する - 計算: ボリンジャーバンドの上下バンド・中心線と、RSIを別々に計算し、最新値・1本前の値・直近N本の連続条件などを取得する
- 判定:
- バンド状態: +2σタッチ / -2σタッチ / ミドル付近 / スクイーズ中
- RSI状態: 70以上 / 30以下 / 50超 / 50未満
- 両者の組み合わせから、シグナル整合性フラグを決定
- 出力: 整合性フラグ(EXTREME_ALIGNED / TREND_CONTINUATION / MIXED など)を、ログまたは外部ダッシュボードに送る
この設計はエントリーシグナルそのものではなく、シグナル整合性の判定レイヤー として実装すると応用が利きます。逆張り系・順張り系の別ロジックを上に乗せ、整合性フラグを前提条件として参照する構造にしておくと、後から戦略を差し替えやすくなります。
どう活用するか
この設計図は、目的別に活用できます。
自作派の方は、Claude Code を使った cBot 開発時の整合性判定モジュールの設計書として、本記事の節構造をそのまま流用してみてください。委託派の方は、ai-programming.xyz への開発相談時に「RSIとボリンジャーバンドを併用してシグナル整合性を見たい」という前提を共有しておくと、要件詰めがスムーズになります。教育派の方は、スクールでの実践課題のテーマとして、本記事の整合性判定ロジックを自分の手で実装してみる演習に使えます。
RSIとボリンジャーバンドの組み合わせは、「系統の違う指標を並べると相場の状態がより細かく見えてくる」という設計思想を学ぶ題材としても有用です。ここで身につけた粒度の使い分けは、より複雑な組み合わせ(RSI + ボリンジャー + 移動平均など)へ拡張するときの土台になります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。