【勝てない?】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化する方法を公開しています。
▶︎ 無料で今すぐ手に入れる(次回より有償化予定)
※この条件での配布は今回限り。
再配布は一切行いません。