ストキャスティクスとMACDの組み合わせ — 2種類のクロスをどう整合させるか

ストキャスティクスとMACDは、どちらも「2本の線の交差」をシグナルとして扱う指標です。見た目は似ていますが、ストキャスティクスの交差は0〜100という枠の内側で起きるのに対し、MACDの交差には上限も下限もありません。同じクロスという言葉でくくられていても、示している内容は別物と考えられます。

本記事では、この2種類のクロスに別々の役割を割り当て、どちらを先に見るかという順序を決める設計の考え方を整理します。特定の設定値が成果を保証するという話ではなく、cBotの構造を組み立てる際の下敷きとしてお読みいただければ幸いです。

MACDのクロスを①、ストキャスティクスのクロスを②とし、順序を持たせた二層構造の模式図

ストキャスティクスの役割

ストキャスティクスは、設定期間の高値・安値レンジのどのあたりに現在の終値があるかを0〜100で示す指標です。速い線の%Kと、それを平滑化した%Dの2本で構成され、80以上は上方への偏り、20以下は下方への偏りとして読まれることが多い指標です。成り立ちの詳細はストキャスティクスの基本でも扱っています。

この指標の持ち味は反応の速さです。値幅そのものが小さい局面でも、レンジ内の位置が変われば数値が動くため、変化の兆しを早い段階で示す場合があります。

一方、単独で使うときの限界もはっきりしています。一方向に伸びる相場では80や20の帯に張り付いたまま推移し、その間にクロスだけが何度も発生する状態になりがちです。位置を測る指標である以上、「その位置がこれからも続くのか」までは答えてくれません。つまりストキャスティクスは、単体で方向を決める材料というより、タイミングを測る係として扱ったほうが役割が明確になります。

MACD の役割

MACDは、期間の異なる2本の指数移動平均の差をMACDライン、その平滑値をシグナルライン、両者の差をヒストグラムとして描く指標です。基本的な読み方はMACDの基本にまとめています。

ストキャスティクスと違い、MACDには上限も下限もありません。したがって「数値がいくつだから過熱」という読み方は成立せず、ゼロラインのどちら側にいるか、ヒストグラムが拡大しているか縮小しているかという構造の変化を追う指標になります。

単独で使うときの限界は遅さです。移動平均を二重に処理する構造上、転換の確認は価格の動きより後になります。また、値動きが停滞している局面ではMACDラインとシグナルラインが絡み合い、意味の薄いクロスが連続することがあります。こうした性質から、MACDは地合いが続いているかどうかを見る係と整理すると扱いやすくなります。

なぜこの組み合わせか

この2つは、見ている対象が重なっていないところに組み合わせる意味があります。MACDは遅いが構造を見る、ストキャスティクスは速いが位置しか見ない。それぞれの弱点をもう片方が補完する関係になります。

設計上のポイントは、両者を対等に並べず、順序を決めることです。まずMACD側で地合いの条件が整っているかを確認し、その条件が生きている間にストキャスティクスのクロスが出たらトリガーとして扱う、という二層構造にします。この形にすると、ストキャスティクスの弱点である「一方向に伸びる相場での逆方向クロス」を、MACD側の条件で最初からふるい落とせます。

逆に、ストキャスティクスのクロスを先に見てから後追いでMACDの確認を待つ形にすると、MACDの遅さがそのまま反応の遅れとして表に出てしまい、速い指標を使っている意味が薄れる場合があります。順序の設計は好みの問題ではなく、それぞれの指標の性質から導かれるものと考えられます。

もう一つ効いてくるのが「有効期限」の考え方です。MACDの条件が成立してから何本以内のトリガーを採用するかをあらかじめ決めておくと、条件成立地点から大きく離れた場所で出たクロスを排除できます。何本が妥当かは時間足によって変わるため、検証しながら決める領域になります。

なお、両者のクロスが揃ったとしても、それは地合いと位置が同じ方向を向いたという事実の確認にすぎません。相場が一方向に伸びているのか横ばいなのかという前提の切り分けは、トレンドとレンジの基本で扱った視点や、ADXのような別系統の指標で補うと、判断の輪郭が整理しやすくなります。

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

MACDは短期12・長期26・シグナル9、ストキャスティクスは%K=14・%D=3・スロー3あたりが広く知られた設定です。まずはこの標準値を起点に置き、対象の時間足と値動きの粗さに応じて調整していく進め方が扱いやすいと考えられます。

方向性としては、反応を早めたい場合は期間を短く、細かい振れを抑えたい場合は長くします。ただし、両方を同時に短くすると二層構造そのものが崩れます。MACD側は地合いを見る係なので相対的に長め、ストキャスティクス側はタイミング係なので相対的に短め、という役割に沿った差を保つほうが、設計としては一貫します。

どの値が正解という性質のものではないため、対象銘柄・時間足ごとにバックテストとフォワード検証で挙動を確かめる前提で扱います。特に有効期限の本数は、パラメータの中でも結果の傾向が変わりやすい部分なので、単独で振って感触を確認しておくとよいでしょう。

cBot化する際の考慮点

まず、判定は確定足ベース、つまりOnBarで行うのが基本になります。ストキャスティクスは足の途中でクロスが出たり消えたりするため、OnTickで都度評価すると、発注と取消を繰り返す構造になりかねません。

次にウォームアップです。MACDは長期EMAとシグナルの二段構えで計算されるため、値が安定するまでに必要な足数がストキャスティクスより多くなります。起動直後やヒストリーが不足している状態では、判定そのものをスキップする実装が安全です。

そして、この組み合わせで特に重要になるのが状態管理です。「MACDの条件が成立した」ことは一瞬の出来事なので、成立したバーのインデックスを保持し、その後の経過本数を数える仕組みが要ります。単純に「現在のバーで両方の条件が同時に真か」と書いてしまうと、順序も有効期限も表現できません。

// 例: 二層構造の状態管理イメージ
var macd  = Indicators.MacdCrossOver(Close, 26, 12, 9);
var stoch = Indicators.StochasticOscillator(14, 3, 3, MovingAverageType.Simple);

// ① 地合い条件が成立したバーを記録しておく
if (macd.MACD.Last(1) > macd.Signal.Last(1) && macd.MACD.Last(2) <= macd.Signal.Last(2))
    _setupBarIndex = Bars.Count - 1;

// ② 有効期限の内側でタイミング条件が揃ったかを確認する
bool withinWindow = _setupBarIndex >= 0 && (Bars.Count - 1 - _setupBarIndex) <= ValidBars;
bool trigger = stoch.PercentK.Last(1) > stoch.PercentD.Last(1)
            && stoch.PercentK.Last(2) <= stoch.PercentD.Last(2);

エッジケースとしては、週明けのギャップや指標発表直後の急変で、両方の条件が同じ1本のバーに詰め込まれる状況が挙げられます。この場合は順序を判定できないため、「同一バーでの同時成立は採用しない」と決めておくと挙動が安定します。

計算負荷そのものは軽い部類ですが、保持する状態が増えるほど、再起動時にその状態が失われる問題が表面化します。バー確定のたびに状態を再構築できる書き方にしておくと、運用中の再起動に強い構造になります。

決済側は別系統で設計することをおすすめします。エントリーと決済を同じ指標で賄うと、相場の性質が変わったときに逃げ道がなくなります。値幅の目安をATRから取るなど、独立した基準を持たせる構成が考えられます。

実装の流れ

全体を並べると、次のような順序になります。

環境認識から条件成立の記録、トリガー監視、フィルター、発注、管理までの処理フロー図

  1. 環境認識: MACDのゼロラインとの位置関係と、ヒストグラムの傾きで地合いを判定
  2. 条件成立の記録: 成立したバーを保存し、有効期限のカウントを開始
  3. トリガー監視: 確定足ごとにストキャスティクスの%Kと%Dのクロスを確認
  4. フィルター: 経済指標の前後、スプレッド異常、保有ポジション数、相関する銘柄の状況を確認
  5. 発注: 条件を満たした場合に、あらかじめ決めたリスク許容度からロットを算出
  6. 管理: 決済条件を別ロジックで監視し、想定と違う動きになった場合の手仕舞いルートも用意

順序を持つ構造なので、ログには「いつ①が成立し、何本後に③が出たか」を残しておくと、後からパラメータを見直す際の材料になります。単に発注の記録だけを残すと、有効期限の設定が長すぎたのか短すぎたのかを後から追えなくなります。

どう活用するか

自分でcBotを作る方は、Claude Codeを使った実装の参考にしてください。この組み合わせは条件の数こそ少ないものの、状態を持つロジックを書く練習として手ごろな題材です。

実装に時間が取れない方や、既存の戦略の前段に組み込みたい方は、ai-programming.xyz で個別の実装相談を承っています。

体系的に学びたい方は、スクールで状態管理を含むcBot設計と、検証の進め方を実際の開発フローに沿って学ぶことができます。

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