【勝てない?】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化する方法を公開しています。
▶︎ 無料で今すぐ手に入れる(次回より有償化予定)
※この条件での配布は今回限り。
再配布は一切行いません。
14ema 14ma 20ema 20ma 240ema 240ma 5ema 5ma 60ema 60ma EMA 一目均衡表 移動平均線