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

インジケーター

結論

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前後を維持できる数少ない王道ロジック。

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

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

    特典&ご案内

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

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

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