ボリンジャーバンドとストキャスティクスを組み合わせる考え方 — バンドの位置と過熱感の二重確認で逆張り候補を絞る設計
価格の変動幅から「いまの価格が相対的にどの位置にあるか」を示すボリンジャーバンドと、一定期間の高値・安値レンジの中での位置から過熱感を測るストキャスティクス。本記事では、この2つを組み合わせて、バンドで「どこで」を、ストキャスティクスのクロスで「いつ」を判定する二重確認の設計を整理します。想定読者は、バンドタッチだけの逆張りでダマシに悩んでいる方、レンジ相場向けのcBotを自作してみたい方です。特定の設定が成果を保証するという話ではなく、実装へ落とし込む際の考え方を共有することが目的です。
ボリンジャーバンドの役割
ボリンジャーバンドは、移動平均線を中心に、標準偏差(価格のばらつきの度合い)の倍数を上下に重ねた指標です。価格がアッパーバンドやロワーバンドに接近している場合、「最近の変動幅から見て相対的に伸びた位置にいる」ことの目安になります。指標そのものの読み方はボリンジャーバンドの基礎で解説しています。
単独使用時の限界は主に2つです。第一に、バンドタッチは反転の合図ではありません。強いトレンドでは価格がバンドに沿って進み続ける「バンドウォーク」が起こり、タッチのたびに逆張りしていると一方向に切られ続ける場合があります。第二に、バンドタッチは「状態」であって「瞬間」ではないことです。価格がバンド付近に滞在し続けると、どの足を判定点とするかが曖昧になり、エントリーの引き金として使うには判定基準が定まりにくいという性質があります。
ストキャスティクスの役割
ストキャスティクス(Stochastic Oscillator)は、一定期間の高値・安値レンジの中で現在の終値がどの位置にあるかを0〜100で表す指標です。%Kと、それを平滑化した%Dの2本で構成され、一般に80以上を買われ過ぎ圏、20以下を売られ過ぎ圏の目安とし、2本のクロスを転換の示唆として読みます。基本の読み方はストキャスティクスの基礎にまとめています。
こちらの限界も明確です。クロスは頻繁に発生するため、単独でエントリー根拠にすると小さな往復に巻き込まれやすくなります。また、トレンドが続く局面では買われ過ぎ・売られ過ぎ圏に張り付いたまま戻らないことがあり、「圏内に入った」こと自体を逆張りの根拠にするのは心もとない、という性質を持っています。
なぜこの組み合わせか
この組み合わせの核心は、「位置」と「タイミング」を別の指標に分担させることにあります。
- 位置(どこで): ロワーバンドへの到達で「相対的に伸びた場所まで来た」ことを確認
- タイミング(いつ): 売られ過ぎ圏からの%Kと%Dの上向きクロスで「戻り始めの兆し」を特定
バンドタッチだけでは転換の瞬間を特定できず、クロスだけでは場所の裏づけがありません。両方が揃った足だけを候補とすることで、バンド付近に滞在しているだけの足や、レンジ中央で頻発するクロスの多くをふるい落とせます。互いのダマシを他方が削る、ノイズフィルターとして機能することが期待できる関係です。似た発想でRSIを重ねる設計はRSIとボリンジャーバンドの組み合わせで扱っていますが、ストキャスティクスには2本のクロスという離散的なトリガーがある点が実装上の違いになります。
ただし、両者はどちらも逆張り寄りの性格を持つため、弱点も同じ方向に重なります。強いトレンドではバンドウォークと圏内張り付きが同時に起こり、二重確認が揃ったこと自体がダマシになる場面が残ります。バンド幅の拡張中は見送る、上位足の環境で絞るなどのフィルターを重ねる設計が現実的で、どの銘柄・時間足でどの程度機能するかはバックテストで確かめる工程が前提になります。
パラメータをどう考えるか
ボリンジャーバンドは期間20・±2σが広く使われる出発点です。σの倍数を大きくすればタッチの発生は減って厳選寄りに、小さくすれば増えて敏感寄りになります。ストキャスティクスは(14, 3, 3)が滑らか寄り、(5, 3, 3)のような短い設定は敏感寄りで、短くするほどクロスが増えて二重確認のフィルターに頼る比重が上がります。
80/20という水準もあくまで目安で、銘柄や時間足によって値の分布は変わります。短期足ほどタッチもクロスも増えるためフィルターの効果を観察しやすい反面、ノイズ自体も増えます。「これが正解」という組は存在せず、狙う値動きの長さに合わせてバックテストで決める領域です。
cBot化する際の考慮点
実装面では、判定の順序と「タッチ」「クロス」の定義を明文化することが中心になります。
- 確定足で判定する: 未確定の足ではバンドもストキャスティクスもティックごとに揺れます。OnBarで1本前の確定値だけを使うと判定のブレを防げます。
- クロス判定には2本必要: 「前の足では%Kが%D以下、直近の確定足では上」という2時点の比較で初めてクロスと言えます。1時点の大小関係だけでは張り付き中も真になり続けます。
- タッチの定義を決める: 終値がバンドの外で確定した場合に限るか、ヒゲ(安値)が触れれば良しとするかで発生頻度が大きく変わります。どちらが良いかではなく、決めて固定し検証することが重要です。
- 足数不足のガード: 計算期間分の足が揃うまでは指標値が安定しません。バー数のチェックを判定の前に置きます。
- ハードストップを省略しない: 逆張り型は「そのまま伸び続ける」シナリオと常に隣り合わせです。ATRのような変動幅の物差しで損切り幅を先に決め、成立しないセットアップは見送る設計にします。変動幅の測り方はATRの基礎が参考になります。
判定部分の骨組みを疑似コードで示します。
// OnBar内: 確定した1本前の足で判定する
var bb = Indicators.BollingerBands(Bars.ClosePrices, 20, 2, MovingAverageType.Simple);
var sto = Indicators.StochasticOscillator(14, 3, 3, MovingAverageType.Simple);
bool touchedLower = Bars.LowPrices.Last(1) <= bb.Bottom.Last(1); // 位置の確認
bool crossedUp = sto.PercentK.Last(2) <= sto.PercentD.Last(2)
&& sto.PercentK.Last(1) > sto.PercentD.Last(1); // タイミングの確認
bool fromOversold = sto.PercentK.Last(2) < 20; // 売られ過ぎ圏からの戻り
bool longCandidate = touchedLower && crossedUp && fromOversold;
実際には、バンド幅による環境フィルター、手仕舞い条件、ロット設計などを加えて細部を詰めていくことになります。
実装の流れ
処理の流れを上流から並べると、次のようになります。
- 足の確定: OnBarで確定バーの値のみを使います。
- 環境判定: バンド幅の状態を確認し、拡張が進む局面では逆張り判定自体を見送ります。
- 位置判定: 確定足とロワーバンド(またはアッパーバンド)の位置関係を確認します。
- タイミング判定: 売られ過ぎ圏(買われ過ぎ圏)からの%Kと%Dのクロスを2時点比較で検出します。
- 発注・管理: 候補が成立した場合のみ、変動幅を基準に損切り幅と利確幅を設計し、判定時の状態を記録して後から検証できるようにします。
どう活用するか
「位置で場所を絞り、タイミングで引き金を引く」という骨格は、バンドをケルトナーチャネルに、ストキャスティクスをRSIのクロス系に置き換えても崩れない、使い回しの効く設計です。自分で組んでみたい方は、Claude Codeを併走させたcBot開発の設計メモとして本記事の構成を活用してみてください。作るより相談したいという方は、ai-programming.xyzで個別の開発相談を承っています。体系的に学びたい方に向けては、スクールでこうした判定ロジックを実装しながら学べます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。