ドンチャンチャネルと移動平均線を組み合わせる考え方 — ブレイクアウトに方向の文脈を与える設計
「直近20本の高値を更新したら買い方向の候補」というルールは、コードに落としやすい反面、更新という事実そのものには方向の文脈が含まれていません。狭いレンジの中でも上端と下端は順番に更新されるため、シグナルだけは律儀に両方向へ発生します。本記事では、水準の更新を検知する ドンチャンチャネル に、相場の向きを示す 移動平均線 を重ね、「どちらの更新を採用するか」を仕分ける設計を整理します。設計の考え方を共有するものであり、特定の期間や条件が成果につながることを示すものではありません。
ドンチャンチャネルの役割
ドンチャンチャネルが返しているのは、きわめて限定的な情報です。直近N本の高値、直近N本の安値、そしてその中点。それだけです。基礎についてはドンチャンチャネルとは何を測る指標かで扱っています。
この素っ気なさは、実装の側から見ると強みになります。価格から直接導出されるため計算過程にあいまいさがなく、「終値が上限を超えたか」という判定は真偽値ひとつで表現できます。平滑化方式の選択肢も、価格系列の取り方による差異もほとんどありません。ロジックの分岐条件として、これほど扱いやすい形をした指標は多くないと言えます。
やっかいなのは、その真偽値が「なぜ超えたのか」を語らない点です。強い上昇の途中で上限を更新したのか、こう着したレンジの上端をわずかにはみ出しただけなのか、チャネルの側からは区別がつきません。方向感のない局面では上限更新と下限更新が交互に現れ、そのたびに逆向きの候補が立ちます。この構造についてはブレイクアウトとダマシの基本でも整理しています。単独運用で最初に突き当たる壁は、この「文脈の欠落」だと考えられます。
移動平均線の役割
移動平均線は一定期間の終値を平均した線で、細かい上下をならしたあとに残る向きを示します。詳しくは移動平均線とは何を測る指標かをご覧ください。
チャネルと並べると、性格の違いがはっきりします。ドンチャンチャネルが返すのは「点」の情報——ある足で更新が起きたかどうか——であるのに対し、移動平均線が返すのは「線」の情報、つまりある程度の期間にわたって持続している傾きです。価格が線の上下どちらにあるか、線自体が上向きか下向きか。この2つを見るだけでも、相場の向きについて粗い分類ができます。
ただし、移動平均線だけでエントリーの瞬間を決めようとすると無理が出ます。平均である以上、値動きに対して構造的に遅れるためです。交差をシグナルとして使う場合も、交差が確定した時点では初動が終わっていることが珍しくありません。「いつ」を決める役には向いていない、というのが単独使用時の限界です。
なぜこの組み合わせか
役割分担を一言で言えば、ドンチャンチャネルが「いつ」を、移動平均線が「その向きでよいか」を受け持つ構成です。
第一の接点は 候補の仕分け にあります。上限更新が起きた足で、価格が移動平均線より上にあり、かつ線が上を向いているなら、それは持続している向きと同じ方向への更新です。反対に、線が下を向いている最中の上限更新は、下降の途中で起きた戻りの上端かもしれません。同じ「上限更新」という現象を、線の状態によって二種類に振り分ける——これがノイズフィルターとして機能することが期待されます。方向が定まらない局面では線の傾きが寝るため、両側の更新がまとめて対象外になりやすい点も、この構成の副次的な性質です。
第二の接点は 撤退基準 です。ドンチャンチャネルは入口の設計に注目が集まりがちですが、中点(ミドルライン)や反対側のラインは、そのまま出口の基準としても使えます。加えて、移動平均線を価格が明確に割り込んだかどうかも、想定していた向きが崩れたことを知る材料になります。入口と出口で別々の指標を持ち出さずに済むため、ロジック全体の見通しが良くなります。
なお、この2つでは 変動幅の情報が欠けている 点は明記しておきます。更新の向きと相場の傾きは分かっても、1本あたりどの程度動く相場なのかは分かりません。損切り幅の設計まで含めたい場合は、ドンチャンチャネルとATRの組み合わせで扱った軸を三層目として重ねる拡張が検討対象になります。
パラメータをどう考えるか
先に断っておくと、ここに唯一の正解はありません。検証の出発点としての方向性を整理します。
チャネル期間は、短い時間軸を狙うなら10〜20本前後、腰を据えた値動きを拾うなら50本以上が一つの目安とされます。期間を延ばすほど更新の頻度は下がり、代わりに一回の更新が持つ意味は重くなる傾向があります。
移動平均線の期間は、チャネル期間と同程度かそれ以上に取ると、判定の性格がそろいやすくなります。チャネル期間よりはるかに短い線を使うと、線の傾きが更新のたびに向きを変えてしまい、フィルターとしての役目を果たしにくくなります。
ここで検討に値するのが、エントリーと手仕舞いで期間を非対称にする 考え方です。入口は長めの期間で慎重に、出口は短めの期間で機敏に——たとえば入口に50本のチャネルを、出口に20本の反対側ラインを使う、といった組み方です。入口と出口に同じ感応度を要求する必然性はありません。どの数値を採るにしても、過去データでの検証を挟んでから先へ進めてください。
cBot化する際の考慮点
設計上の急所を4点挙げます。
参照するバーをそろえる: チャネルの上限・下限は、当該足を含めるか除くかで意味が変わります。当該足の高値を含めた上限は、その足の高値によって定義上必ず更新される状態になり得ます。判定に使う足の一つ手前までで確定した水準を基準に置き、その足の終値と比較する形が扱いやすい構成です。
傾きの判定方法を決める: 「線が上向き」をコードにするには具体化が要ります。現在値と数本前の値を比較する、一定の差分を超えた場合のみ向きありとみなす、といった定義を先に決めます。差分にしきい値を設けないと、ほぼ横ばいの局面で向きが頻繁に反転します。
必要な本数を確認する: チャネル期間と移動平均期間のうち長いほうの本数が揃うまで、判定は保留します。読み込み直後の不完全な値で分岐に入らないよう、本数チェックを先頭に置きます。
同一バーで照合する: 更新の判定と線の状態の判定は、必ず同じ足の上で突き合わせます。評価する足がずれると、片方が消えた直後にもう片方が反応し、意図しない候補が立ちます。
// 抜粋: 前バーまでで確定した水準と、移動平均の向きを照合する
private MovingAverage _ma;
protected override void OnStart()
{
_ma = Indicators.MovingAverage(Bars.ClosePrices, MaPeriod, MovingAverageType.Exponential);
}
protected override void OnBar()
{
if (Bars.Count < Math.Max(ChannelPeriod, MaPeriod) + SlopeLookback + 2) return;
// 判定対象の足(Last(1))を含めず、その手前のN本で上限を求める
double upper = double.MinValue;
for (int i = 2; i <= ChannelPeriod + 1; i++)
upper = Math.Max(upper, Bars.HighPrices.Last(i));
double close = Bars.ClosePrices.Last(1);
double maNow = _ma.Result.Last(1);
double maPast = _ma.Result.Last(1 + SlopeLookback);
bool breakoutUp = close > upper;
bool trendUp = close > maNow && (maNow - maPast) > SlopeThreshold;
// breakoutUp && trendUp のときだけ候補として扱う
}
検証段階では、フィルターで落とした更新もあわせてログへ残しておくと、どちらの条件が効いているのかを後から切り分けやすくなります。
実装の流れ
処理は大きく三層に分かれます。
- 前段(方向): 移動平均線の位置と傾きを評価し、その足で採用する向きを決める。向きが定まらなければ処理を終了する
- 中段(検知): 判定する足の手前までで確定したチャネル水準とその足の終値を比較し、前段で決めた向きと一致する更新だけを候補にする
- 後段(出口と出力): 手仕舞い用の短い期間のラインとミドルラインを計算し、撤退条件とあわせて通知または発注へ渡す
三層を別々の関数に分けておくと、後から「前段の傾き判定を上位足の線に差し替える」「後段の手仕舞い期間を外部パラメータにする」といった変更が局所的な修正で済みます。最初から発注まで自動化せず、通知どまりの構成でしばらく走らせ、どの局面でフィルターが働くのかを目で確かめる段階を挟むと、ロジックの癖を安全に把握できます。
どう活用するか
自分で組んでみたい方は、本記事の三層構成(方向・検知・出口)をそのまま Claude Code への指示書の骨格として使えます。入口と出口で期間を変える設計は、指示の粒度を上げるほど実装が安定しやすい部分です。
開発を任せたい方は、ai-programming.xyz での相談時に「傾きをどう定義するか」「手仕舞いを何本のラインで行うか」の2点を先に決めておくと、要件のすり合わせが早く進みます。腰を据えて学びたい方には、傾き判定のしきい値設計が、スクールの演習題材としてちょうどよい題材になります。
検知役をチャネルから別の指標へ差し替えても、この骨格はそのまま再利用できます。フィルターの型として手元に残しておくと、次のロジックを組むときの下敷きになります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。