ケルトナーチャネルとMACDを組み合わせる考え方 — バンド外の引けを勢いの伸び縮みで仕分ける

ケルトナーチャネルは、移動平均を中心にATR(平均的な値動きの幅)の倍数で上下のバンドを引く指標です。足がバンドの外側で引けると「普段の変動幅を超えて動いた」ことが分かりますが、その動きが まだ勢いを増している途中なのか、すでに伸び切って失速し始めているのか までは教えてくれません。

本記事では、この見分けをMACDヒストグラムの「伸び縮み」に担当させる組み合わせを整理します。ケルトナーチャネルが「どこまで動いたか」という位置を、MACDが「勢いが増えているか減っているか」という変化を受け持つ構成です。ブレイクアウト系のcBotで、バンド外の足をどう扱うかに迷っている方に向けた設計の参考としてまとめており、特定の設定が成果につながるという話ではありません。

ケルトナーチャネルの外側で引けた足を、MACDヒストグラムの伸びと縮みで拡張と失速に仕分ける模式図

ケルトナーチャネルの役割

ケルトナーチャネルは、中心線(一般にEMA)の上下に「ATR × 倍率」の距離でバンドを置きます。バンド幅がATRに連動するため、値動きの大きい時期には広がり、静かな時期には狭まります。ATR自体の考え方はATRとはにまとめています。

単独で使う場合、バンド外での引けは「通常の変動幅を超えた動き」の目安として、ブレイクアウトの判定材料になります。中心線の傾きからは大まかな方向も読めます。

限界は、バンドの外に出たという事実が、続く動きの性質を区別しない 点です。勢いが加速している初動でも、長く伸びた末の最後のひと押しでも、同じ「外側での引け」として表れます。前者を継続、後者を反転の手前と読むなら真逆の判断になるため、位置の情報だけでは材料が足りません。またATRが平均値である以上、急な変動の直後はバンドの追従が遅れます。

MACD の役割

MACDは、短期と長期のEMAの差でモメンタム(値動きの勢い)を測る指標です。MACDライン、シグナルライン、両者の差であるヒストグラムで構成されます。基礎はMACDとはを参照してください。

本記事で注目するのはヒストグラムの 前の足との差 です。符号が同じままでも、棒が伸びていれば勢いは増しており、縮み始めていれば勢いの増加が止まったと読めます。

限界は、MACDが 価格の位置を知らない 点です。ヒストグラムが縮んでも、それが中心線付近のもみ合いなのか、大きく伸びた後なのかは分かりません。値が価格単位で出るため、銘柄をまたいで閾値を共有しにくいという性質もあります。

なぜこの組み合わせか

2つの指標は、互いの欠けている情報を持っています。

重ねると、バンド外での引けを次のように仕分けられます。

  1. 外側で引け、ヒストグラムが伸びている → 勢いを伴った拡張として、継続側の材料
  2. 外側で引け、ヒストグラムが縮んでいる → 伸び切った後の失速の兆候として、新規エントリーを見送る材料、または保有中なら決済を検討する材料
  3. バンド内 → この組み合わせでは判定対象外

2のパターンは、価格は高値を更新しているのに勢いが減っている状態で、ダイバージェンスに近い考え方です。ただしダイバージェンスが過去の山と谷を比べるのに対し、ここでは「バンド外という限られた場面」で直近の伸び縮みだけを見るため、判定が単純でcBotに落としやすい点が違いです。

一般論として、ブレイクアウト系ロジックの弱点である「伸び切った足に飛び乗る」場面を減らすノイズフィルターとして機能することが期待できます。一方で、ヒストグラムは1本単位で上下するため、強い動きの途中の一時的な縮みも「失速」に分類されます。ここを許容するか、縮みが2本続くことを条件にするかは設計判断です。

パラメータをどう考えるか

正解となる設定はなく、方向性を整理します。

ケルトナーチャネル は、中心線20期間・ATR10期間・倍率2前後が広く参照されます。倍率を小さくするとバンド外の足が増え、判定機会は増えますが「外側」の意味が薄まります。大きくすると機会は減り、外側の足はより例外的な動きに絞られます。

MACD は12・26・9が標準です。ここで意識したいのは時間軸の釣り合いです。ケルトナーの中心線より極端に短いMACDを使うと、バンドが捉える動きの大きさに対して勢いの判定が細かすぎ、伸び縮みが頻繁に入れ替わります。

伸び縮みの判定幅 は、この組み合わせで新しく生まれるパラメータです。前の足との差がわずかでも「縮み」と数えるのか、一定以上の差を求めるのかで分類が変わります。短期足ほど細かな上下が増えるため、余裕を持たせる方向が考えられます。いずれも過去データで分類結果の分布を確認してから決め、バックテストでの検証は省略しないでください。

cBot化する際の考慮点

cTraderのcBotとして実装する場合の設計ポイントです。

確定足での判定: OnTickで形成中の足を見ると、バンド外かどうかもヒストグラムの伸び縮みも、足の確定までに入れ替わります。判定はOnBarで、1本前の確定足(Last(1))を基準にします。

比較に必要な本数: 伸び縮みは「確定足」と「その1本前」の比較なので、Last(1) と Last(2) の2本分が必要です。起動直後は長期EMAの期間分の足がそろうまで値が安定しないため、NaNチェックと必要本数の確認を入れます。

計算順序: 2つの指標は互いに依存しないため生成順は自由ですが、判定は「位置 → 勢い」の順にします。バンド内なら勢いの計算結果を使わずに抜けられ、ログも読みやすくなります。

計算負荷: インジケーターの生成はOnStartで一度だけ行い、OnBarでは値の参照に留めます。

// OnStart で生成済みの keltner / macd を OnBar で参照する例
double close  = Bars.ClosePrices.Last(1);
double upper  = keltner.Top.Last(1);
double lower  = keltner.Bottom.Last(1);
double hist1  = macd.Histogram.Last(1);  // 確定足
double hist2  = macd.Histogram.Last(2);  // その1本前

if (double.IsNaN(upper) || double.IsNaN(hist1) || double.IsNaN(hist2)) return;

bool aboveBand = close > upper;
bool belowBand = close < lower;
if (!aboveBand && !belowBand) return;    // バンド内は判定対象外

bool expanding = aboveBand ? hist1 > hist2 : hist1 < hist2;
// expanding = true なら拡張、false なら失速として分類し、判断材料に渡す

ポジション管理との連携: 「失速」を新規見送りだけに使うのか、保有ポジションの決済判定にも使うのかを先に決めます。決済にも使う場合、損切りはケルトナーの中心線やATR基準で別に持たせ、勢いの判定だけに出口を委ねない構成が安全側です。

実装の流れ

入力 → 計算 → 判定 → 出力の順に整理します。

  1. 入力: 銘柄と時間足を決め、OnStartでケルトナーチャネルとMACDを生成する
  2. 位置の判定: OnBarで確定足の終値がバンドの外側かを確認し、内側なら終了する
  3. 勢いの判定: ヒストグラムの確定足と1本前を比べ、伸びているか縮んでいるかを判定する
  4. 分類: 拡張・失速のどちらかに振り分ける
  5. 出力: 分類結果と各値をログ・通知に出し、拡張のみをエントリー候補として後段のリスク管理に渡す

最初は発注に直結させず、分類結果をログに残して「失速に分類された足のあと、値動きがどう推移したか」を観察する段階を挟むと、判定幅の検討がしやすくなります。

位置の判定、勢いの判定、拡張と失速への分類、出力までの戦略フロー図

どう活用するか

自作派の方は、Claude Codeで開発する際に「バンド外の確定足だけを対象に、ヒストグラムの前足比で拡張と失速に分ける」という一文を仕様として渡すと、意図が伝わりやすくなります。委託派の方は、失速を新規見送りだけに使うのか決済にも使うのかを整理したうえで ai-programming.xyz へご相談いただくと、要件のすり合わせが進めやすくなります。教育派の方は、スクールの演習として分類結果をログ出力し、時間足ごとに比べてみると組み合わせの性格がつかめます。

ケルトナーチャネルを別の角度から絞り込む構成としては、ケルトナーチャネルとADXの組み合わせも参考になります。ADXがトレンドの「強さの水準」で選別するのに対し、本記事の構成は勢いの「増減の向き」で選別する点が違いです。

本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。