【勝てない?】MACDだけで勝てる説をAIが検証|5分足での勝率と結果

インジケーター

【結論】MACDだけでは勝てない

AIによる検証結果では、MACD単体の勝率は 33.24%、プロフィットファクター(PF)は1.004。


つまり、トントンか、やや負けるレベルの結果だった。

ただし、MACD+他の条件(EMA+ボリンジャーバンド)を加えることでPFは1.16まで改善。

MACDはそれ単体で仕掛けるツールではなく、「トレンドと勢いを読むための補助指標」として使うと真価を発揮する。

MACDとは?なぜ人気なのか

MACDは、
短期と長期の移動平均線の差をもとに、トレンドの勢い(モメンタム)を可視化するインジケーター。

基本構造は次のとおり。

    ・MACDライン:短期EMA(12)− 長期EMA(26)
    ・シグナルライン:MACDラインの9EMA
    ・ヒストグラム:MACDとシグナルの差

上昇トレンドではMACDラインが上昇し、ヒストグラムがプラス。


下降トレンドではMACDラインが下がり、ヒストグラムがマイナスになる。

他に、ダイバージェンスを利用する方法もある。

参考 : 「ダイバージェンスだけで勝てる?」

視覚的にも「勢いの強さ」をつかみやすく、世界中のトレーダーに愛用されている理由がここにある。

AIにプロンプトを入力してみた

使用AI:ChatGPT Pro(統計モジュール搭載)

データ:Axioryヒストリカルデータ(USDJPY/5分足)

MACDだけで勝てるかどうかを検証してください。
条件:
・環境 : MT4
・通貨ペア:USDJPY
・期間:2021年1月〜2025年8月
・時間足:5分足
 - datetimeをユニーク化(重複削除)
 - 欠損を補うために「全1分足の時系列インデックス」を生成し、足りない部分は直前値で補完
 - そこから改めて5分足にリサンプリング
・設定値:デフォルト
・売買ルール:MACDゴールデンクロス・デッドクロス
・決済:反対シグナル
・資金管理:固定ロット
出力内容:
①総トレード数
②勝率
③平均リスクリワード比
④トータル損益 
⑤プロフィットファクター(PF)

初回検証の結果

AIによるバックテスト結果は以下の通り。

    ① 総トレード数
1817
    ② 勝率
33.24%
    ③ 平均リスクリワード比(平均勝ち幅 ÷ 平均負け幅)
約 1.01
    ④ トータル損益(pips)
約 +138.2 pips
    ⑤ プロフィットファクター(PF)
約 1.004

見た目には「シグナルがわかりやすい」のがMACDの魅力だが、
数字が示すように、単体での優位性はほぼ存在しなかった。

特に、5分足ではノイズ(短期の値動き)に振り回される傾向が強く、
「連敗 → 反転 → 連勝 → 連敗…」の波が激しい。

MACDだけで勝てない理由

だましシグナルが多い

ヒストグラムが微妙に反転しただけでもシグナルが点灯する。
その結果、レンジ相場で無数の無駄トレードが発生する。

トレンドの方向を示さない

MACDは「勢い」を可視化するツールであって、「どちらの方向に伸びるか」は示してくれない。

決済基準が曖昧

シグナルクロスでエントリー・決済を繰り返すと、利確が早すぎたり、含み益が戻されるケースが多発する。

つまり、短期ノイズに弱い「勢いの指標をトリガーに誤用している」

条件を加えて再検証(MACD × 75EMA x ボリンジャーバンド)

MACDを「勢い」ではなく「方向フィルタ」として使い、75EMA +ボリンジャーバンドを加えることに。

改善ルール

【ロジック概要】
対象:USDJPY・5分足・2021/1〜2025/8
■ 使用インジケーター
MACD (12,26,9)
75EMA(トレンド方向フィルタ)
ボリンジャーバンド(期間20、偏差2)
■ エントリールール
ロング条件
1. 終値 > 75EMA(上昇トレンド)
 
2. MACDラインがシグナルを上抜け(ゴールデンクロス)
3. 終値 > ボリンジャーバンドのミドルライン
ショート条件
1. 終値 < 75EMA(下降トレンド)
2. MACDラインがシグナルを下抜け(デッドクロス)
3. 終値 < ボリンジャーバンドのミドルライン
■ 決済ルール
反対のMACDクロス発生時に成行決済(フィルタ条件は不問)
ドテン方式(決済と同時に逆方向で条件が揃っていればエントリー)
未決済ポジションは最終バーで強制決済

■ 時間帯フィルタ
有効な取引時間:15:00〜23:00 JST(ロンドン〜NY序盤の流動性が厚い時間帯)
それ以外の時間帯ではエントリーしない

結果(MACD × 75EMA x ボリンジャーバンド)

    ① 総トレード数:4,665
    ② 勝率:33.95%
    ③ 平均リスクリワード比:2.25
    ④ トータル損益:約 +3,022 pips
    ⑤ PF:1.16

特徴

・MACD単独より精度向上(PF 1.004 → 1.16、トータル損益増加)
・無駄打ち削減:時間帯とEMAフィルタでレンジ逆張りを回避
・平均RRが高い → 少ない勝ちでも利益が残る構造

TradingViewで使えるAI同等インジケーター

//@version=5
indicator("MACD × 75EMA × BB(20,2) Session Filter (JST)", overlay=true)

// =====================
// パラメータ
// =====================
group_ma   = "MA & BB"
emaLen     = input.int(75, "EMA期間", group=group_ma, minval=1)
bbLen      = input.int(20, "BB 期間", group=group_ma, minval=1)
bbMult     = input.float(2.0, "BB 偏差", group=group_ma, minval=0.1, step=0.1)

group_macd = "MACD"
fastLen    = input.int(12, "MACD Fast", group=group_macd, minval=1)
slowLen    = input.int(26, "MACD Slow", group=group_macd, minval=1)
sigLen     = input.int(9,  "Signal",    group=group_macd, minval=1)

group_sess = "時間帯フィルタ(JST)"
useSession = input.bool(true, "時間帯フィルタを使う", group=group_sess)
sessionStr = input.session("1500-2300", "取引時間(JST)", group=group_sess)
tz         = input.string("Asia/Tokyo", "タイムゾーン", group=group_sess)

// =====================
// インジ計算
// =====================
ema75 = ta.ema(close, emaLen)

bbBasis = ta.sma(close, bbLen)
bbDev   = ta.stdev(close, bbLen)
bbUpper = bbBasis + bbMult * bbDev
bbLower = bbBasis - bbMult * bbDev

macdLine   = ta.ema(close, fastLen) - ta.ema(close, slowLen)
signalLine = ta.ema(macdLine, sigLen)

// =====================
// 時間帯フィルタ(JST)
// =====================
inSess = not useSession ? true : not na(time(timeframe.period, sessionStr, tz))

// =====================
// エントリー条件
// =====================
longCond  = ta.crossover(macdLine, signalLine)  and close > ema75 and close > bbBasis and inSess
shortCond = ta.crossunder(macdLine, signalLine) and close < ema75 and close < bbBasis and inSess

// =====================
// 描画
// =====================
plot(ema75,  "EMA75", color=color.new(color.orange, 0), linewidth=2)
plot(bbBasis, "BB Basis", color=color.new(color.blue, 0))
plot(bbUpper, "BB Upper", color=color.new(color.blue, 60))
plot(bbLower, "BB Lower", color=color.new(color.blue, 60))
fill(plot1=plot(bbUpper, display=display.none), plot2=plot(bbLower, display=display.none), color=color.new(color.blue, 90))

plotshape(longCond,  title="Long Entry",  style=shape.labelup,   location=location.belowbar, color=color.new(color.lime, 0), text="BUY",  size=size.tiny, textcolor=color.black)
plotshape(shortCond, title="Short Entry", style=shape.labeldown, location=location.abovebar, color=color.new(color.red,  0), text="SELL", size=size.tiny, textcolor=color.white)

// =====================
// アラート
// =====================
alertcondition(longCond,  title="BUY Signal",  message="MACD×EMA75×BB: BUY")
alertcondition(shortCond, title="SELL Signal", message="MACD×EMA75×BB: SELL")

まとめ

MACDは万能インジケーターではない。


AI検証の結果が示すように、MACD単体ではPF1.004=優位性なし。

だが、EMAやボリンジャーバンドと組み合わせることで、
市場の「流れ」と「勢い」を同時に捉えられるようになる。

参考 : 「EMAだけで勝てる?」

参考 : 「ボリンジャーバンドだけで勝てる?」

EMAで「流れの方向」を、
ボリンジャーバンドで「相場の呼吸(振幅)」を掴み、
MACDで「勢い」を確認する。

この3つを掛け合わせることで、
チャートは「ノイズ」から「リズム」へと変わる。

AIが導き出した結論は明快だった。

    特典&ご案内

    今回の検証は Axioryのヒストリカルデータを使用しました。
    AXIORY口座を利用しない場合、同じ結果は再現できません)

    詳細データや手法はPDFにまとめ、
    
今だけ【メルマガ登録者限定】で無償配布しています。
    さらに、FX手法をAIで作る方法、EA化する方法を公開しています。

    ▶︎ 無料で今すぐ手に入れる(次回より有償化予定)
    ※この条件での配布は今回限り。
再配布は一切行いません。