VWAPとMACDを組み合わせる考え方 — 当日の実勢価格とモメンタム転換を役割分担させる設計
VWAP(出来高加重平均価格)は、当日の取引でどの価格帯に出来高が集まったかを1本の線として示す指標で、デイトレードの基準線として広く参照されます。一方MACD(マックディー)は、2本の移動平均の差からモメンタム(勢い)の転換を捉える指標です。
本記事では、「当日の実勢を示す基準線」と「勢いの転換を検知する指標」を役割分担させる組み合わせを、cBotとして実装する視点から整理します。あくまで設計と実装の参考としての位置づけであり、特定の設定が成果を保証するという話ではありません。
VWAP の役割
VWAP(Volume Weighted Average Price)は、当日の取引開始からの「典型価格×出来高」の累計を、出来高の累計で割った値です。その日の市場参加者が平均していくらで売買してきたかを示し、機関投資家が執行コストの基準として参照することでも知られています。基礎は別記事のVWAPとはにまとめています。
価格がVWAPの上にあれば当日の平均より高い水準で、下にあれば平均より安い水準で取引されている、という 位置の情報 が一目で得られます。単純移動平均と違い出来高で重み付けされるため、「どこで商いが厚かったか」を反映した基準線になる点が特徴です。
単独使用時の限界も明確です。VWAPは位置を示すだけで、いまの勢いがどちらへ変化しつつあるかは教えてくれません。また日次リセットを前提とするため、セッション序盤はサンプルが少なく線が安定しにくく、日をまたぐスイングの判断には使いにくい性格があります。
MACD の役割
MACDは、短期と長期の指数平滑移動平均(EMA)の差を取ったMACD線、その平滑化であるシグナル線、両者の差を棒グラフにしたヒストグラムで構成されます。ヒストグラムの符号がマイナスからプラス(またはその逆)へ切り替わる点は、モメンタム転換の目安として読まれます。基礎はMACDとはを参照してください。
単独使用時の弱点は2つあります。第一に、移動平均を土台とする以上の 遅行性 と、レンジ相場で符号転換を連発する ダマシ です。第二に、MACDは「どの価格水準で転換が起きたか」という文脈を持ちません。当日の平均より割高な位置での陽転も、割安な位置まで押した後の陽転も、指標上は同じシグナルに見えてしまいます。
なぜこの組み合わせか
両者が答える質問の種類が違うことが、役割分担の根拠になります。VWAPが答えるのは「当日の平均に対して価格がどちら側にいるか」という 位置 の質問、MACDヒストグラムが答えるのは「直近の勢いがどちら向きに変わりつつあるか」という 変化 の質問です。
考え方の例を挙げます。
- 価格がVWAPの上で推移 → 当日は買い方優勢の環境と見る
- その環境でヒストグラムがマイナスからプラスへ転じる → 平均方向への押し戻しが一巡し、勢いが戻り始めた局面の 候補
- 価格がVWAPの下で推移 → 当日は売り方優勢の環境と見る
- その環境でヒストグラムがプラスからマイナスへ転じる → 戻りが失速した局面の 候補
ポイントは、ヒストグラムの符号転換を全部拾うのではなく、VWAPが示す環境と同じ側の転換だけを採用する ことです。環境と逆側のシグナルを最初から捨てる設計にすると、レンジ局面での符号転換連発という典型的な失敗を減らしやすく、一般論として、VWAPがノイズフィルターとして機能することが期待できます。
一方で限界も織り込んでおく必要があります。VWAPが日次でリセットされる以上、この構成は基本的にデイトレードの時間軸が前提です。また、価格がVWAP付近に絡みつく方向感のない日には、環境判定そのものが曖昧になります。VWAPからの乖離が一定以上あるときだけ判定する、セッション序盤の一定時間は見送る、といった追加条件が検討対象になります。
パラメータをどう考えるか
唯一の正解はなく、検証を前提に方向性だけ整理します。
MACD は12・26・9(短期EMA・長期EMA・シグナル)が標準です。短くすると転換の検知は速くなる代わりにダマシが増える傾向があるため、日中足ではまず標準値から始めて挙動を確かめるのが無難です。
VWAP 自体にはパラメータがありませんが、「いつ累計をリセットするか」が実質的なパラメータになります。サーバー日付で切るのか、特定の取引セッション開始で切るのかによって線の形が変わり、FXのようにほぼ24時間動く市場では特に影響が大きい設計判断です。
時間足はM5〜M15程度の日中足が自然な守備範囲です。いずれの場合も、自分の銘柄・時間帯でのバックテストで挙動を確認するプロセスは省略しないでください。
cBot化する際の考慮点
cTraderのcBotとして実装する場合の設計ポイントを挙げます。
VWAPの自前計算: 環境によってはVWAPが標準インジケーターとして用意されていないため、累積計算を自前で実装します。ロジック自体は「典型価格×出来高の累計」と「出来高の累計」を保持して割るだけの単純なものです。
出来高の代用: FXでは市場全体の実出来高が取得できないため、ティックボリューム(値動きの回数)で代用するのが一般的です。ブローカーごとに値が異なる点は認識しておきます。
日次リセット: 足の日付が変わったタイミングで累計をゼロクリアします。リセット直後はサンプル不足で線が不安定なため、当日分が一定本数たまるまで判定を見送る設計が安全です。出来高累計がゼロのままのゼロ除算チェックも入れます。
確定足での判定と状態管理: OnBarで確定足ベースの判定を基本とします。ヒストグラムの符号転換は「1本前の符号」と「直前確定足の符号」の比較で検出するため、前回値の参照が必要です。
// 例: VWAPの自前計算(日次リセット)とMACDヒストグラムの併用
private double _cumPV;
private double _cumVol;
private DateTime _currentDay;
private MacdHistogram _macd;
protected override void OnStart()
{
_macd = Indicators.MacdHistogram(Bars.ClosePrices, 26, 12, 9);
}
protected override void OnBar()
{
int i = Bars.Count - 2; // 直前の確定足で判定する
if (Bars.OpenTimes[i].Date != _currentDay) // 日付が変わったらリセット
{
_cumPV = 0;
_cumVol = 0;
_currentDay = Bars.OpenTimes[i].Date;
}
double typical = (Bars.HighPrices[i] + Bars.LowPrices[i] + Bars.ClosePrices[i]) / 3.0;
double volume = Bars.TickVolumes[i];
_cumPV += typical * volume;
_cumVol += volume;
if (_cumVol <= 0) return;
double vwap = _cumPV / _cumVol;
double hist = _macd.Histogram[i];
double prevHist = _macd.Histogram[i - 1];
if (double.IsNaN(hist) || double.IsNaN(prevHist)) return;
bool aboveVwap = Bars.ClosePrices[i] > vwap;
bool turnedUp = prevHist <= 0 && hist > 0;
// aboveVwap && turnedUp を「押し戻し後の再加速候補」として記録・通知する
}
実装初期はシグナルのログ出力を仕込み、チャートと突き合わせて意図どおり動いているかを確認するのがおすすめです。
実装の流れ
全体像を入力→計算→判定→出力の流れで整理します。
- 入力: 監視する銘柄・時間足を決め、確定足ごとに価格とティックボリュームを取得する
- 更新: 日付が変わればVWAPの累計をリセットし、当日分を積み上げる
- 環境判定: 終値とVWAPの位置関係で当日の環境を判定。VWAP付近で曖昧なら以降をスキップ
- タイミング判定: 環境と同じ側のヒストグラム符号転換を検出する
- 出力: シグナル(BUY候補 / SELL候補 / WAIT)をログや通知に送る
判定を発注まで直結させるか、通知で止めるかは運用スタイル次第です。まずは通知までの構成で挙動を観察し、納得してから自動化範囲を広げる進め方が、検証としても安全です。
どう活用するか
この設計図は目的別に活用できます。
自作派の方は、Claude Codeを使ったcBot開発の設計ドキュメントとして、本記事の節構造をそのまま流用してみてください。委託派の方は、ai-programming.xyz への開発相談の際に「VWAPの日次リセットとMACD符号転換の検出を、通知まで自動化したい」のように前提を共有すると要件定義がスムーズです。教育派の方は、スクールの演習テーマとして、累積計算のリセット処理と符号転換の状態管理を自分の手で実装してみると理解が深まります。
当日の基準線で環境を絞り、別の指標でタイミングを観察する構図は、VWAPとRSIの組み合わせとも共通する基本形です。この型を一つ身につけておくと、他の組み合わせへ展開するときの土台になります。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。