平均足とMACDを組み合わせる考え方 — 色の転換とモメンタムで流れを二段構えで確認する設計
ローソク足のノイズをならして流れの方向を読みやすくする平均足と、トレンドの勢いの変化をいち早く映すMACD。本記事では、この2つを組み合わせて、MACDの転換を「予告」、平均足の色の転換を「確認」とする二段構えでエントリー候補を絞り込む設計を整理します。想定読者は、単独指標のダマシに悩んでいる方、トレンドフォロー型のcBotを自作してみたい方です。特定の設定が成果を保証するという話ではなく、実装へ落とし込む際の考え方を共有することが目的です。
平均足の役割
平均足(Heikin-Ashi)は、始値を「前の足の始値と終値の平均」、終値を「その足の4本値の平均」で描き直した合成足です。1本ごとの細かい上下動がならされるため、トレンドが出ている局面では実体の色(陽・陰)が連続しやすく、いまの流れがどちら向きかを視覚的に判断しやすくなります。基本の読み方は平均足の基礎で解説しています。
一方、単独使用時の限界は主に2つです。第一に、平均を取る仕組み上、転換の検出は実際の値動きより遅れます。色が変わったのを確認してから動くころには、値幅の一部が過ぎてしまっている場合があります。第二に、方向感の乏しいレンジ相場では色が頻繁に入れ替わり、色の転換をそのままシグナルとして扱うとダマシに振り回されやすくなります。加えて、平均足の四本値はあくまで合成値であり、実際に取引される価格とは別物である点も見落とされがちです。
MACDの役割
MACD(移動平均収束拡散法)は、短期EMAと長期EMAの差(MACDライン)と、それを平滑化したシグナルラインの2本で、モメンタムの変化を捉える指標です。2本のクロスやゼロラインとの位置関係から、勢いの転換を比較的早い段階で示唆してくれます。指標そのものの読み方はMACDの基礎にまとめています。
早さの代償として、MACD単独ではダマシが多くなります。特にレンジ相場ではクロスが頻発し、そのたびに反応していると小さな往復に巻き込まれ続けます。「早いが騒がしい」——これがMACDの性格であり、単独でエントリー根拠にするには心もとない理由です。
なぜこの組み合わせか
この組み合わせの核心は、反応速度の異なる2つの判定を時間差で重ねることにあります。MACDは早いが騒がしく、平均足は遅いが落ち着いている。この非対称を利用して、役割を次のように分担させます。
- 一段目(予告): MACDラインがシグナルラインを上抜け(下抜け)し、勢いの転換を示唆
- 二段目(確認): 平均足の実体の色が同じ方向へ転換し、流れの変化を裏づけ
両方が揃った足だけをエントリー候補とする設計です。MACDのクロスだけなら拾ってしまう小さな揺り戻しの多くは、平均足の色が変わる前に消えていきます。逆に、平均足の色転換だけを待つ場合と比べると、MACDの先行シグナルがあることで「この色転換は勢いの変化を伴っているか」という裏づけを持たせられます。MACDのダマシと平均足の遅れという、互いの弱点を他方が補完する関係と考えられます。似た発想で、平均足にトレンド強度の物差しを重ねる設計は平均足とADXの組み合わせで扱っています。
もちろん万能ではありません。二段の確認を待つ分、単独使用よりエントリーはどうしても遅くなり、トレンドの初動部分は取りにいけません。また両者ともトレンドの存在を前提とする指標のため、レンジ相場では二段とも機能しにくく、条件が揃ったこと自体がダマシである場面も残ります。どの時間足・どの銘柄でどの程度機能するかは対象しだいであり、採用前にバックテストで確かめる工程が前提になります。
パラメータをどう考えるか
MACDは12・26・9が広く使われる出発点です。期間を短くすると予告が早くなる分ダマシも増え、長くすると平均足の確認との時間差が縮まり、二段構えにする意味が薄れていきます。
平均足側の実質的なパラメータは「色の転換を何本で確定と見なすか」です。1本で判定すれば速く、2本連続を要求すれば堅くなります。実体の大きさや、逆方向のヒゲがないことを条件に加える設計もあります。時間足については、短期足ほどノイズが増えて二段目のフィルターが効きやすい反面、確認待ちによる遅れの影響も相対的に大きくなります。「これが正解」という組は存在せず、狙う値動きの長さに合わせてバックテストで決める領域です。
cBot化する際の考慮点
実装面では、平均足が「合成値」であることに起因する注意点が中心になります。
- 平均足は自前で計算する: cTraderのcBotでは、チャートを平均足表示に切り替えてもコードから見える
Barsは通常のOHLCです。平均足の四本値はコード内で算出します。 - 再帰計算と状態管理: 平均足の始値は「前回の平均足の始値と終値の平均」で決まる再帰定義です。前回値を変数に保持して差分更新すれば、毎バー全履歴を計算し直す必要はありません。最初の1本だけは前回値が存在しないため、通常の足の値で初期化します。
- 確定足で判定する: 未確定の足では平均足の色もMACDもティックごとに揺れます。OnBarで1本前の確定値だけを使うと、判定のブレを防げます。
- 発注は実際の価格で: 平均足の終値は合成値であり、その価格で約定するわけではありません。エントリー価格やストップ幅の設計には、実際のBid/AskやATRのような変動幅の物差しを別途使います。
- 計算順序: 平均足の更新 → MACD取得 → 二段判定、の順序を守ります。状態変数の更新を判定の後に回すと、次の足で1本ずれた値を参照するバグの温床になります。
判定部分の骨組みを疑似コードで示します。
// OnBar内: 確定した1本前の足で平均足を差分更新する
double haClose = (Bars.OpenPrices.Last(1) + Bars.HighPrices.Last(1)
+ Bars.LowPrices.Last(1) + Bars.ClosePrices.Last(1)) / 4.0;
double haOpen = (_prevHaOpen + _prevHaClose) / 2.0; // 前回のHA値から再帰的に算出
bool haBull = haClose > haOpen;
var macd = Indicators.MacdCrossOver(26, 12, 9);
bool macdBull = macd.MACD.Last(1) > macd.Signal.Last(1);
// 二段判定: 両者の方向が一致した足だけをエントリー候補とする
bool longCandidate = haBull && macdBull;
_prevHaOpen = haOpen; _prevHaClose = haClose; // 判定後に状態を更新
実際には、クロスの「発生直後か継続中か」の区別、手仕舞い条件、ロット設計などを加えて細部を詰めていくことになります。
実装の流れ
処理の流れを上流から並べると、次のようになります。
- 足の確定: OnBarで確定バーの値のみを使います。
- 平均足の更新: 前回のHA値から今回のHA始値・終値を再帰計算し、実体の色を判定します。
- MACD取得: MACDラインとシグナルラインの確定値を取得します。
- 二段判定: MACDの上下関係と平均足の色が同方向に揃った足だけをエントリー候補とし、片方だけの足は見送ります。
- 発注・記録: 候補となった場合は実際の価格を基準にストップ幅と利益確定幅を設計し、判定時の状態を記録して後から検証できるようにします。
どう活用するか
「速い指標で予告し、遅い指標で確認する」という骨格は、MACDをROCに、平均足をカギ足的な平滑化に置き換えても崩れない、使い回しの効く設計です。自分で組んでみたい方は、Claude Codeを併走させたcBot開発の設計メモとして本記事の構成を活用してみてください。作るより相談したいという方は、ai-programming.xyzで個別の開発相談を承っています。体系的に学びたい方に向けては、スクールでこうした判定ロジックを実装しながら学べます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。