フィボナッチとMACDの組み合わせ — 押しの深さとトレンドの持続力を分けて読む

押し目・戻りの局面では、「どこまで戻ったか」と「元の流れはまだ生きているか」という 2 つの問いが同時に立ち上がります。フィボナッチ・リトレースメントは前者、MACD(移動平均収束拡散法)は後者を扱うのに向いた道具です。

本記事では、フィボナッチを押しの深さの物差し、MACD をトレンドの持続力の計器として役割分担させる考え方を整理します。cBot を自作したい方、開発依頼の前に要件を言語化したい方向けの設計メモです。特定の設定が成果を保証するものではありません。

上段に価格とフィボナッチ水準、下段にMACDライン・シグナル・ヒストグラムを配置し、価格が水準帯に入る間にMACDがゼロより上を保ちつつヒストグラムが縮小から再拡大へ転じる様子を示す模式図

フィボナッチ・リトレースメントの役割

まずは位置を担当するフィボナッチから見ていきます。

フィボナッチ・リトレースメントは、ひとつの波の始点と終点を結び、その値幅に 38.2%・50%・61.8% などの比率を掛けて水平線を引く手法です。押しの深さを「値幅に対する割合」に変換できるので、時間足や値動きの大きさが違っても同じ尺度で比較できます。

単独で使うと、「浅い押しで止まったのか、深い押しまで進んだのか」という押しの段階はよく見えます。一方で限界もはっきりしています。

3 点目がとくに重要で、ここを補う役割を MACD に持たせるのが本記事の組み立てです。

MACD の役割

続いて、持続力を担当する MACD です。

MACD は短期 EMA(指数平滑移動平均)と長期 EMA の差を MACD ライン、その平滑線をシグナルライン、両者の差をヒストグラムとして表示する指標です。MACD ラインがゼロより上なら短期平均が長期平均の上にある状態、つまり上昇方向の勢いが平均的には残っている状態と読めます。

単独で使うと、勢いの向きと強弱の変化が見えます。ヒストグラムが縮むのは勢いの鈍化、再び伸びるのは勢いの戻りを示す、という読み方が一般的です。

ただし単独利用には次の限界があります。

つまり MACD は「流れが生きているか」は語れても、「どこで」を語れません。ここがフィボナッチと噛み合うポイントです。

なぜこの組み合わせか

両者は補う方向が逆になっているため、組み合わせる意味が生まれます。

フィボナッチは押しの深さを示せても、それが調整か転換かは判断できません。MACD は勢いの持続を示せても、価格の目安を持ちません。互いの空白を埋め合う補完関係にあると考えられます。

具体的には、押し目局面を 3 つの観点に分けて整理できます。

  1. 位置: 価格が 38.2%〜61.8% の水準帯に入っているか(フィボナッチ)
  2. 持続: MACD ラインが元のトレンド側(上昇波ならゼロより上)を保っているか
  3. 再加速: ヒストグラムが縮小を終え、元のトレンド方向へ再び伸び始めたか

「位置」だけ満たして MACD がゼロを割り込んでいる局面は、押しというより流れの変化を疑う材料になります。逆に MACD が元の側を保ったまま水準帯に入り、ヒストグラムが再拡大し始めた局面は、三つの観点が揃った状態として観察の優先度を上げる、という使い分けができます。

もう一つの利点は、無効化の条件を両側から定義できることです。61.8% を超える押しと MACD のゼロライン割れが重なったら「押し目シナリオは不成立」と扱う、というように破棄の根拠を言語化できます。ダマシを消すものではありませんが、片側の条件だけで判断する場面を減らすノイズフィルターとして機能することが期待できます。

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

ここでは、どの値を選ぶかより「何を基準に選ぶか」を整理します。

MACD は 12・26・9 が広く知られた標準設定ですが、出発点にすぎません。短くすると細かな勢いの変化を拾える反面ゼロライン付近の往復が増え、長くすると持続確認には向く一方で再加速の検出が遅れます。短期の押しなら短め、上位の波の押しなら長め、という方向性で当たりをつけます。

フィボナッチ側は、比率よりもスイングの検出期間が実質的なパラメータです。MACD が大きな波を見ているのにフィボナッチは小さな波を測っている、というずれが起きないよう、両者が同じ規模の波を見ているかを揃えることがこの組み合わせ固有の論点です。

どの設定も時間足・銘柄・相場環境で挙動が変わるため、バックテストで確認し、可能なら期間を分けた検証も行ったうえで扱うのが安全です。

cBot化する際の考慮点

ここからは実装時の設計論点です。要件定義の段階で決めておくと手戻りが減ります。

1. 確定足で評価する ヒストグラムの「縮小 → 再拡大」は、形成中の足で判定すると同じ足の中で何度も成立・不成立が入れ替わります。OnBar で直前の確定足(Last(1))と、その一本前(Last(2))を比較する設計が扱いやすくなります。

2. スイングの固定タイミング 新高値が出るたびにフィボナッチを引き直すと、水準帯の判定が揺れ続けます。スイング高値が確定した時点で基準を固定し、押しの判定中は動かさないルールを明示します。

3. 計算順序と依存関係 スイング確定 → 水準算出 → 位置判定、と MACD 状態判定は独立に計算できます。最後に両者を突き合わせる構造にしておくと、どちらか一方だけを差し替えやすくなります。

// 例: 確定足ベースで位置・持続・再加速を個別に評価する骨組み
var macd = Indicators.MacdCrossOver(Bars.ClosePrices, 26, 12, 9);

double macdLine = macd.MACD.Last(1);
double histNow  = macd.Histogram.Last(1);
double histPrev = macd.Histogram.Last(2);

double range    = swingHigh - swingLow;          // 固定済みスイング
double level382 = swingHigh - range * 0.382;
double level618 = swingHigh - range * 0.618;
double close    = Bars.ClosePrices.Last(1);

bool inZone      = close <= level382 && close >= level618;
bool trendAlive  = macdLine > 0;
bool reAccel     = histPrev < histNow;           // 縮小が止まり再拡大へ
bool invalidated = close < level618 && macdLine < 0;

4. エッジケース 起動直後は EMA が安定するまで判定しない分岐を置きます。スイング幅が極端に小さい場合の最小幅条件や、ヒストグラムのゼロ付近の微小な揺れを「再拡大」と誤認しないための閾値・連続本数の条件も検討します。

5. ポジション管理との連携 無効化条件は損切り位置の設計根拠にも使えますが、このレイヤーは状態を返すだけにして、ロット計算や決済ロジックとは分離しておきます。

実装の流れ

全体像を、入力から状態出力までの一本の流れとして整理します。

価格入力・スイング確定・フィボナッチ水準帯判定・MACD状態判定・無効化チェック・状態ラベル出力の6ブロックを順に並べたcBot実装フロー図

OnBar ごとに確定足を受け取り、スイングが新たに確定していれば基準を更新します。次に位置判定と MACD 状態判定を並列に評価し、無効化チェックを通したうえで「三条件成立」「位置のみ」「持続のみ」「無効化」「非該当」といった状態ラベルを返します。ラベルをログに残しておくと、押し目と戻りの局面ごとに、どの状態の後にどんな値動きが続いたかを振り返る材料になります。

どう活用するか

最後に、立場ごとの使い方をまとめます。

自作派の方は、本記事の「位置・持続・再加速・無効化」の四分割を、Claude Code に渡す設計メモのたたき台として使ってみてください。条件ごとに関数を分けて書かせると、検証と修正がしやすくなります。

委託派の方は、ai-programming.xyz の個別実装相談で、スイングの取り方・MACD の期間・無効化条件の定義を要件として伝えていただくと、話が早く進みます。

体系的に学びたい方には、スクールで「複数の指標をどう役割分担させるか」という設計の考え方から学べる環境を用意しています。

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