MACD・ボリンジャーバンド・出来高を三層で組み合わせる考え方 — 勢い・広がり・参加度で読む
トレードロジックを設計するとき、1つの指標に判断を全部任せると、その指標の弱点がそのまま戦略の弱点になります。本記事では、MACDで「勢い」、ボリンジャーバンドで「広がり」、出来高(ティックボリューム)で「参加度」を測る三層構成の考え方を整理します。2指標での設計はMACDとボリンジャーバンドの組み合わせで扱いましたが、本記事はそこに「その値動きに市場参加者が伴っているか」という第三の確認層を足す設計です。cBotの自作を検討している方、条件を追加するとロジックがどう変わるかを整理したい方に向けた内容です。
MACDの役割 — 勢いを測る層
MACD(移動平均収束拡散法)は、短期EMAと長期EMAの差から方向と勢いの変化を捉えるモメンタム系指標です。基礎的な仕様はMACDの基礎にまとめています。
三層構成の中でMACDが担当するのは「いま、どちら向きの勢いが出始めたか」という質問です。MACDラインとシグナルラインのクロスや、ヒストグラムの反転を方向転換の検知材料として使います。
単独使用の限界は2つあります。第一に、移動平均由来の遅行性です。クロスが確認できた時点で、値動きはある程度進んでいます。第二に、クロスが「どんな値動きから生まれたか」を区別できないことです。閑散な時間帯にわずかな値幅で発生したクロスも、参加者が集中する時間帯に大きな値幅を伴って発生したクロスも、線の形としては同じに見えます。
ボリンジャーバンドの役割 — 広がりを測る層
ボリンジャーバンドは、移動平均線と標準偏差から価格の散らばりを可視化する指標で、三層構成では「値動きの広がりが平常か異常か」を担当します。詳細はボリンジャーバンドとはを参照してください。
この構成で注目するのはバンド幅の伸縮です。バンド幅が狭いスクイーズはボラティリティの低下、そこからの拡張は値動きの立ち上がりの目安になります。MACDのクロスが「スクイーズ中のノイズ」なのか「拡張を伴う転換」なのかを切り分ける材料として機能します。
限界は、広がりが実のある値動きかどうかを判定できない点です。薄商いの時間帯に少数の注文で価格が飛んでも、バンドは同じように広がります。また方向の情報を持たないため、広がりの検知だけでは判断材料として不足します。
出来高(ティックボリューム)の役割 — 参加度を測る層
三層目の出来高は、その値動きに市場参加者がどれだけ伴っているかを測る層です。
前提として、FXには株式のような集中取引所がないため、正確な取引量は取得できません。cTraderで扱えるのはティックボリューム、つまりそのバーの間に価格が更新された回数です。厳密な取引量ではありませんが、市場の活発さの代理変数として広く使われています。
使い方の基本は絶対値ではなく比較です。直近N本の平均ティックボリュームを平常水準とみなし、判定対象のバーがそれを明確に上回っているかを見ます。
限界は、出来高自体が方向を持たないことです。参加者が集中していることは分かっても、どちら向きの圧力なのかは価格側の情報と突き合わせる必要があります。また、東京・欧州・NYのセッションによって平常水準そのものが変わるため、単純な比較が機能しにくい時間帯がある点にも注意が必要です。
なぜ三層で組み合わせるか
三層がそれぞれ別の質問に答えている点が、この構成の核です。
- MACD: どちら向きの勢いが出始めたか
- ボリンジャーバンド: 値動きの広がりは立ち上がっているか
- 出来高: その動きに参加者は伴っているか
読み方の例を挙げます。
- クロス + バンド拡張 + 出来高が平常超え → 転換・広がり・参加の3点が揃った、相対的に注目度の高い場面
- クロス + バンド拡張 + 出来高が平常以下 → 形は整っているが参加が薄く、ダマシを警戒する材料
- クロスのみ(バンド収縮・出来高平常) → スクイーズ中のノイズの可能性を考慮して見送る判断材料
2指標でも「勢い×広がり」の設計は成立しますが、スクイーズ明けの初動がダマシかどうかを見分ける材料は不足しがちです。そこを参加度の層が補う、という役割分担になります。一般論として、性質の異なる三層での確認は、単一条件のシグナルに対するノイズフィルターとして機能することが期待できます。
一方で、層を増やすことにはコストもあります。3条件が同時に揃う場面は当然少なくなり、シグナルの頻度は下がります。また条件が増えるほど、過去データに合わせ込んだ過剰最適化に陥りやすくなります。三層で「絞る」設計は、機会の減少と検証の難しさを引き受ける設計でもある、という点は意識しておく必要があります。
パラメータをどう考えるか
唯一の正解はなく、検証を前提に方向性だけ整理します。
MACDは(12, 26, 9)、ボリンジャーバンドは期間20・±2σという標準設定から始めるのが無難です。三層構成は関与するパラメータが多いため、最初から全てを調整しようとすると、どの変更が挙動に効いたのか分からなくなります。
実質的に設計の中心になるのは出来高側の基準です。「直近何本の平均と比べるか」「平均の何倍を平常超えとみなすか」の2つで、時間足やセッションによって適切な水準が変わります。判定を厳しくすればシグナルは減り、緩めればフィルターとしての意味が薄れる、というトレードオフの中で位置を決めることになります。
いずれの値も決め打ちにせず、過去データでのバックテストで挙動を確認するプロセスを省略しないことが重要です。
cBot化する際の考慮点
cTraderのcBotとして実装する場合の設計ポイントを整理します。
ティックボリュームの取得: cTraderでは Bars.TickVolumes でバーごとのティックボリュームを取得できます。ただし形成中のバーは値が増え続けている途中のため、判定には確定足(Last(1))を使います。MACDとバンドも確定足で揃えると、三層の判定タイミングが一致します。
平常水準の計算: 出来高の平均は自前でループ計算するか、ティックボリューム系列を移動平均に渡して算出します。セッションによる水準差が気になる場合は、平均期間を短めにして直近の地合いに追従させる方法と、同じ時刻帯のバー同士で比較する方法が候補になります。
エッジケース: 起動直後はバー本数が不足します。三層の中で最も長い参照期間(この構成ではMACDの長期EMA)を基準に、本数チェックを入れてから判定を始めます。週明け直後や祝日はティックボリュームの水準が普段と大きく異なるため、判定対象から外す設計も検討できます。
// 例: 三層のフラグを確定足ベースで揃える
var macd = Indicators.MacdCrossOver(Bars.ClosePrices, 26, 12, 9);
var bb = Indicators.BollingerBands(Bars.ClosePrices, 20, 2,
MovingAverageType.Simple);
if (Bars.Count < 40) return; // 参照本数不足のガード
bool crossUp = macd.MACD.Last(2) <= macd.Signal.Last(2)
&& macd.MACD.Last(1) > macd.Signal.Last(1);
double width = bb.Top.Last(1) - bb.Bottom.Last(1);
double prevWidth = bb.Top.Last(2) - bb.Bottom.Last(2);
bool widening = width > prevWidth;
double avgVol = 0;
for (int i = 2; i <= 21; i++) avgVol += Bars.TickVolumes.Last(i);
avgVol /= 20.0;
bool active = Bars.TickVolumes.Last(1) > avgVol * 1.5; // 倍率は検証対象
// crossUp / widening / active の3フラグを重ねて判断材料とする
計算負荷はいずれも軽く、OnBarでの運用なら問題になりません。実装初期は3フラグの状態を毎バーごとにログへ出力し、チャートと突き合わせて「意図した場面で揃っているか」を目視確認する工程を挟むと、基準調整の当たりが付けやすくなります。
実装の流れ
全体を入力→計算→判定→出力の流れで整理します。
- 入力: 監視する銘柄・時間足を決め、終値系列とティックボリューム系列を取得する
- 計算: MACD・ボリンジャーバンド・出来高の平常水準を確定足ベースで更新する
- 判定: 勢い(クロスの有無と向き)・広がり(バンド幅の拡張)・参加度(平常水準超え)を、層ごとに独立したフラグとして評価する
- 出力: 3フラグの組み合わせをシグナルや環境ラベルとして記録し、発注まで行う場合は損切り水準もセットで設計する
ポイントは、三層を1つの複合条件として書かず、層ごとに独立したフラグとして実装することです。ログを層別に残しておけば「どの層で弾かれたのか」を後から分析でき、基準の調整やフィルターの入れ替えが容易になります。
どう活用するか
自作派の方は、Claude Code を使ったcBot開発の設計ドキュメントとして、本記事の層構造をそのまま流用してみてください。委託派の方は、ai-programming.xyz への開発相談時に「勢い・広がり・参加度の三層で確認したい」という骨格を共有すると、要件定義が速く進みます。教育派の方は、2指標版との差分(参加度の層の追加)を実装課題として扱うと、条件の追加がシグナル頻度や挙動に与える影響を体感できる教材になります。
三層構成の考え方は、他の指標の組み合わせを設計するときにも「各層が別の質問に答えているか」というチェック観点として応用できます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。