【勝てない?】FXは移動平均線だけで勝てる?←AI検証でわかったSMA/EMA最強デイトレ手法

インジケーター

結論

→ AI×FXで月30万円稼ぐメルマガはこちら (無料)


AIによる長期検証の結果、FXは移動平均線だけで勝てる。

ただし、「単線」ではなく勝てない。

「複数の移動平均線を組み合わせる」ことが絶対条件となります。

最強デイトレ手法の設定値


5EMA・14EMA・20EMA・60EMA・240EMA


この5本を組み合わせたゴールデンクロス戦略では


トレンド方向に素直に乗るだけでPF(プロフィットファクター)1.915。

単純に「平均線だけでは無理」と思われがちですが

環境認識とタイミングを兼ねた使い方をすれば

むしろ最もシンプルで再現性の高い手法になります。

移動平均線SMAとEMAの違い

FXでは「移動平均線」といっても、主に2種類あります。

種類 算出方法 特徴 向いている使い方
SMA(単純移動平均) 過去のデータを均等に平均 動きがなめらか。ノイズに強いが反応が遅い 長期トレンドの把握(60SMAや240SMAなど)
EMA(指数平滑移動平均) 直近のデータを重視して平均 価格の変化に素早く反応 短期トレード・デイトレのエントリータイミング

たとえるなら、SMAは「ゆっくり動く大型船」、EMAは「素早く反応するスピードボート」のようなもの。

SMAは方向性を、EMAはタイミングを教えてくれます。


この2つを使い分けることで、「ブレイクの方向」と「乗るタイミング」を同時に掴めます。

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

参考:「200MAだけで勝てる?

AIによる検証(SMA ver.)

まずはSMA(単純移動平均線)だけでの検証です。

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

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

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

結果

    ① 総トレード数:582件
    ② 勝率:37.46%
    ③ 平均リスクリワード比:1.824
    ④ トータル損益:+1,966.3 pips
    ⑤ プロフィットファクター(PF):1.092

つまり、「移動平均線だけ勝てる」。


ただし、勝率は高くてもリスクリワード(RR)が小さいため


大勝ちしづらい=レンジでは削られやすい傾向が見られました。

再検証:TP/SL固定 40 : 20

次に、リスクリワードを固定して検証します。

利確(TP)=40pips、損切(SL)=20pips に設定。

これにより、「伸びたトレンドだけを取る」ことが可能になります。

結果

    ① 総トレード数:470
    ② 勝率:47.02%
    ③ 平均RR:2.0
    ④ トータル損益:+3860 pips
    ⑤ プロフィットファクター(PF):1.775

RRを固定したことで、勝率も上がり、期待値が安定しました。


これは、トレンドに乗ったときの伸びをしっかり取れている証拠です。

再再検証(SMA → EMA)

最後に、同条件をEMA(指数平滑移動平均)に変更。

使用線:5EMA・14EMA・20EMA・60EMA・240EMA
決済:TP40 / SL20固定

結果

    ① 総トレード数:458件
    ②勝率:48.91%
    ③平均リスクリワード比:2.0
    ④トータル損益:+4280 pips
    ⑤プロフィットファクター(PF):1.915

EMAの方が反応が速いため、早めにトレンドに乗れる。

結果、SMAよりも損益が向上しました。

つまり、短期トレードではEMAが優勢ということがAI検証でも裏付けられました。

失敗パターン(一目均衡表との併用)

一方で、EMAに一目均衡表(雲)を組み合わせるとどうなるかも検証しました。


結果は「エントリーが厳しすぎて機会損失」。

雲を抜けたタイミングを待つため

シグナルが出る回数が激減しトレンドを逃す場面が増えました。

結果

    ① 総トレード数:451件
    ② 勝率:48.56%
    ③ 平均リスクリワード比:2.0
    ④ トータル損益:+4,120 pips
    ⑤ プロフィットファクター(PF):1.888

移動平均線の単純な重ね掛けの方が、はるかに安定して勝てる。

なぜ複数の移動平均線のゴールデンクロスで勝てるのか?

理由はシンプルです。


市場参加者の意識が重なるから。

    ・5・14・20は短期トレーダーが意識
    ・60・240は中長期投資家や機関が注目

これらが同じ方向を向く瞬間、「多くのトレーダーが同じ波に乗る」=トレンドが加速する。

つまり、移動平均線のクロスは「方向性の合意点」なのです。

そこにRR設計(TP/SL固定)を組み合わせることで、
勝率ではなく期待値で勝つ仕組みができます。

TradingViewで使えるインジケーター

//@version=5
indicator("EMA Perfect Order (5/14/20/60/240) with Initial-Signal + Optional Ichimoku Filter", overlay=true, timeframe="", timeframe_gaps=true)

// ==============================
// 入力
// ==============================
useCloudFilter = input.bool(false, "一目の雲フィルターを使う(雲上のみロング/雲下のみショート)", tooltip="先行スパンは+26シフトされるため、未来参照を避ける目的で spanA[26], spanB[26] を雲として使用します(現在バー時点で確定済みの雲を参照)。")
showBackground = input.bool(true, "PO中は背景色を表示")
showSignals    = input.bool(true, "初回シグナルの矢印を表示")
emaColors      = input.bool(true, "EMA色の強弱をつける")

// 可視化設定
col5   = emaColors ? color.new(color.teal,   0) : color.new(color.white, 0)
col14  = emaColors ? color.new(color.blue,  0) : color.new(color.white, 0)
col20  = emaColors ? color.new(color.purple,0) : color.new(color.white, 0)
col60  = emaColors ? color.new(color.orange,0) : color.new(color.white, 0)
col240 = emaColors ? color.new(color.red,   0) : color.new(color.white, 0)

// ==============================
// EMA 計算(終値)
// ==============================
ema5   = ta.ema(close, 5)
ema14  = ta.ema(close, 14)
ema20  = ta.ema(close, 20)
ema60  = ta.ema(close, 60)
ema240 = ta.ema(close, 240)

// ==============================
// パーフェクトオーダー判定(厳密な不等号)
// ==============================
longPO  = (ema5 > ema14) and (ema14 > ema20) and (ema20 > ema60) and (ema60 > ema240)
shortPO = (ema5 < ema14) and (ema14 < ema20) and (ema20 < ema60) and (ema60 < ema240)

// 初回のみ(立ち上がり)検出
longStart  = longPO  and not longPO[1]
shortStart = shortPO and not shortPO[1]

// ==============================
// 一目均衡表の雲(標準 9,26,52)
// 先行スパンは+26先行 → 未来参照回避のため、現在バーでは spanA[26], spanB[26] を雲として使用
// ==============================
conversionLen = 9
baseLen       = 26
spanBLen      = 52
displacement  = 26

tenkan   = (ta.highest(high, conversionLen) + ta.lowest(low, conversionLen)) / 2.0
kijun    = (ta.highest(high, baseLen)       + ta.lowest(low, baseLen))       / 2.0
spanA    = (tenkan + kijun) / 2.0
spanB    = (ta.highest(high, spanBLen) + ta.lowest(low, spanBLen)) / 2.0

// 現在バーで参照可能な「確定済みの雲」
cloudA_now = spanA[displacement]
cloudB_now = spanB[displacement]
cloudTop   = math.max(cloudA_now, cloudB_now)
cloudBot   = math.min(cloudA_now, cloudB_now)

// フィルター適用
longOk  = not useCloudFilter or (close > cloudTop)
shortOk = not useCloudFilter or (close < cloudBot)

// ==============================
// シグナル(初回のみ & 雲フィルター条件)
// ==============================
longSignal  = longStart  and longOk
shortSignal = shortStart and shortOk

// ==============================
// 描画
// ==============================
plot(ema5,   "EMA 5",   col5,   1)
plot(ema14,  "EMA 14",  col14,  1)
plot(ema20,  "EMA 20",  col20,  1)
plot(ema60,  "EMA 60",  col60,  2)
plot(ema240, "EMA 240", col240, 2)

// 背景色(PO中)
bgcolor(showBackground and longPO  ? color.new(color.teal,   90) : na)
bgcolor(showBackground and shortPO ? color.new(color.red,    90) : na)

// 初回シグナルのマーカー
plotshape(showSignals and longSignal,  title="Long Start",  style=shape.triangleup,   color=color.new(color.teal, 0),   size=size.tiny, location=location.belowbar, text="PO↑")
plotshape(showSignals and shortSignal, title="Short Start", style=shape.triangledown, color=color.new(color.red,  0),   size=size.tiny, location=location.abovebar, text="PO↓")

// 目安用 TP/SL ライン(可視化のみ。インジケーターなので注文はしません)
showTPSL = input.bool(false, "目安TP/SLガイドを表示")
tpPips   = input.int(40, "TP(pips)", minval=1)
slPips   = input.int(20, "SL(pips)", minval=1)
pip = syminfo.mintick * (syminfo.type == "forex" and str.contains(syminfo.ticker, "JPY") ? 100 : 1)
// JPYクロスは通常1pip=0.01(mintick=0.001のブローカーもあるため近似)
pipVal = 0.01

longTP = showTPSL and longSignal  ? close + tpPips * pipVal : na
longSL = showTPSL and longSignal  ? close - slPips * pipVal : na
shrtTP = showTPSL and shortSignal ? close - tpPips * pipVal : na
shrtSL = showTPSL and shortSignal ? close + slPips * pipVal : na

plot(longTP, "Long TP (guide)",  color=color.new(color.teal, 60),  style=plot.style_circles, offset=0)
plot(longSL, "Long SL (guide)",  color=color.new(color.red,  60),  style=plot.style_circles, offset=0)
plot(shrtTP, "Short TP (guide)", color=color.new(color.teal, 60),  style=plot.style_circles, offset=0)
plot(shrtSL, "Short SL (guide)", color=color.new(color.red,  60),  style=plot.style_circles, offset=0)

// ==============================
// アラート
// ==============================
alertcondition(longSignal,  title="EMA PO Long Start",  message="EMA PO: Long 初回シグナル")
alertcondition(shortSignal, title="EMA PO Short Start", message="EMA PO: Short 初回シグナル")

// 使い方メモ(チャート上のデータウィンドウで確認)
// 1) 初回シグナルのみを矢印表示。ドテンや決済はこのインジでは行いません(戦略は別途ストラテジーで実装)。
// 2) 一目の雲フィルターを有効にすると、雲上でのロング開始/雲下でのショート開始のみを許可します。

このスクリプトを貼るだけで、5・14・20EMAのクロス+60EMA方向一致でサインを出せるようになります。

まとめ

AI検証の結果、FXは移動平均線だけ勝てる。

最も現実的な設定値は以下。

5EMA・14EMA・20EMA・60EMA・240EMA
TP:40pips SL:20pips

シンプルで、誰でも再現可能。


しかも、AIで検証してもプラス期待値2前後を維持できる数少ない王道ロジック。

移動平均線は「古いインジ」と言われがちですが、

正しく重ね、正しく待つことで、いまも最強クラスの手法になります。

→ AI×FXで月30万円稼ぐメルマガはこちら (無料)