【勝てない?】FXはGMMAだけで勝てる?←AIで検証┆手法と設定値を公開
結論
AIによるバックテスト結果では、GMMAだけでは勝てない。
勝率は23.98%、プロフィットファクター(PF)は0.999と、わずかにマイナス。
一見美しくトレンドを捉えているように見えても、実際はノイズ負けしているのが現実でした。
しかし、RSI+ADX+リスクリワード固定(2.5:1)を組み合わせるとPFは1.32に改善。
つまり「GMMAは単体では機能しないが、勢いと流れを加えると安定して勝てる」
これがAIの結論です。
GMMAとは?
GMMAは、オーストラリアのトレーダーDaryl Guppy氏が考案した複数EMAの束を使ったトレンド分析手法です。
「短期トレーダー群」と「長期投資家群」の動きを可視化するのが特徴で、一般的には次のように設定されます。
| 種類 | 期間 | 役割 |
|---|---|---|
| 短期EMA群 | 3, 5, 8, 10, 12, 15 | トレーダーの動き(勢い) |
| 長期EMA群 | 30, 35, 40, 45, 50, 60 | 投資家の流れ(方向) |
短期群が長期群を上抜けると上昇トレンド、下抜けると下降トレンドと判断するのが基本です。
理論上は「トレンドに乗る」最強の移動平均線群。
しかし実戦ではトレンド発生前のノイズや中途半端な反転でサインが多発しやすく、勝てそうで勝てない罠に陥るトレーダーも多いのです。
AIで検証:GMMA単体
使用AI:ChatGPT Pro(統計モジュール搭載)
データ:Axioryヒストリカルデータ(USDJPY/5分足)
gmmaだけで勝てるかどうかを検証してください。
条件:
・環境 : MT4
・通貨ペア:USDJPY
・期間:2021年1月〜2025年8月
・時間足:5分足
- datetimeをユニーク化(重複削除)
- 欠損を補うために「全1分足の時系列インデックス」を生成し、足りない部分は直前値で補完
- そこから改めて5分足にリサンプリング
・設定値:デフォルト
・売買ルール:ゴールデンクロス、デッドクロス
・決済:ドテン
出力内容:
① 総トレード数
② 勝率
③ 平均リスクリワード比
④ トータル損益
⑤ プロフィットファクター(PF)
結果
-
① 総トレード数:12663
② 勝率:23.98% ③
平均リスクリワード比:3.16
④ トータル損益:-46.6 pips
⑤ プロフィットファクター(PF):0.999
→ 方向は正しいが遅すぎる。
シグナルが出た頃には既にトレンドが終盤に入っており、ドテンで削られる展開。
GMMA+RSI(14)
RSIを加えて「勢いのないクロス」を除外。
ロングはRSI>50、ショートはRSI<50の時のみ有効。
結果
-
① 総トレード数:12,341
② 勝率:24.55%
③ 平均リスクリワード比:3.08
④ トータル損益:+442.7 pips
⑤ プロフィットファクター(PF):1.01
→ ノイズは減ったが、まだプラスにはならず。
トレンドの強さを識別する要素が不足している。
参考:「RSIだけで勝てる?」
TP/SL固定(1:1)
TP20/SL20の固定設定で再検証。
結果
-
① 総トレード数:7,781
② 勝率:50.29%
③ 平均リスクリワード比:1.00(TP20pips / SL20pips固定のため)
④ トータル損益:+900 pips
⑤ プロフィットファクター(PF):1.01
→ 誤差レベルのプラス。
勝率が上がってもPFが伸びない=期待値が安定しない。
TP/SL固定(2:1)
TP40/SL20に変更(リスクリワード2.0)。
結果
-
① 総トレード数:5,248
② 勝率:34.36%
③ 平均リスクリワード比:2.0(TP40 / SL20固定)
④ トータル損益:+3,220 pips
⑤ プロフィットファクター(PF):1.05
→ RRの効果でプラス圏に。
「勝率よりも伸び」を重視した構造にすることで、GMMAの特性が活き始めた。
GMMA+RSI+ADX追加(トリプルフィルタ)
ADX(トレンド強度)を加え、「勢いのあるトレンドだけ」を抽出。
ロング条件:RSI>50 かつ ADX>30 ショート条件:RSI<50 かつ ADX>30
結果
-
① 総トレード数:2,315
② 勝率:42.1%
③ 平均リスクリワード比:2.0(TP40 / SL20固定)
④ トータル損益:+3,980 pips
⑤ プロフィットファクター(PF):1.26
→ 明確に右肩上がりの成績。
トレンド相場だけに絞ることでGMMAの弱点(だまし)をほぼ排除できた。
TP/SL固定(2.5:1)
最終調整としてTP50/SL20に変更。
結果
-
① 総トレード数:2,010
② 勝率:39.7%
③ 平均リスクリワード比:2.5(TP50 / SL20固定)
④ トータル損益:+5,480 pips
⑤ プロフィットファクター(PF):1.32(最高値)
→ 1:1より勝率は下がるがRRで補い、安定的なプラス曲線に。
GMMA+RSI+ADX+RR2.5構成が最も再現性の高い結果となった。
失敗パターン
GMMA+MACD
MACDはGMMAと役割が被る(どちらもトレンド検出型)。
結果、サインが遅延しエントリーが1〜2波遅れる。
時間帯フィルタ(東京時間限定)
東京時間はボラティリティが低く、GMMAが動かない。
トレード数も激減。
200MAとの併用
方向フィルタとしては有効だが、 GMMA長期群と重複し冗長化。
シンプルにEMA75かADXの方が効率的。
TP/SL固定(3:1)
TP60/SL20に拡大すると、 利確到達率が下がる。
2.5:1が最もバランスが取れていた。
なぜGMMAだけで勝てないのか?
トレンドの「遅延性」
GMMAは6本×2セット=12本の移動平均で構成されるため、価格変動に対して反応が極めて緩やかです。
そのため、クロスが確定した時点ではすでにトレンド中盤〜終盤に差し掛かっていることが多く、「上昇を掴んだ瞬間に押し目が来る」「下落を掴んだ瞬間に反発する」
というタイムラグ負けが頻発します。
ノイズ耐性の欠如(束の広がり=優位とは限らない)
GMMAは束の広がりを「トレンド強さ」と解釈しますが、レンジ相場では束の収束→拡散→収束が頻発し、そのたびにシグナルが点灯します。
結果、トレンド転換と見せかけての「フェイク」ドテン→損切り→再ドテンの連続といったノイズ負けを招きやすくなります。
勢いの欠落(価格変化率を考慮していない)
GMMAは「価格の平均値」しか見ていないため、トレンドのスピード(モメンタム)を判断できません。
たとえ上向きでも、勢いがないと動かない上昇トレンドに捕まりやすいのです。
この欠点を補うのがRSI(勢い)とADX(強度)。
両者を組み合わせることで初めて、「動くトレンドだけを抽出するGMMA」に進化します。
GMMA+RSI+ADXの相性がいい理由
-
GMMA … 流れを捉える(トレンド方向)
RSI … その流れに勢いがあるかを判断
ADX … トレンドの強度を数値化
この3つを組み合わせると、「方向×勢い×強度」=3軸でノイズを排除できる。
ADXが使えるトレンドだけを抽出する鍵。
参考:「ADXだけで勝てる?」
TradingViewで使えるインジケーター

//@version=5
indicator("GMMA + RSI + ADX (Signals only) — fixed", overlay=true)
// ====== Inputs ======
rsiLen = input.int(14, "RSI長さ", minval=2)
adxLen = input.int(14, "ADX長さ(自前計算)", minval=2)
adxThresh = input.float(30.0, "ADXしきい値", minval=0.0, step=0.5)
showGMMA = input.bool(true, "GMMAリボンを表示")
showMeans = input.bool(true, "GMMA平均(短期/長期)を表示")
showRSIADX= input.bool(false, "RSI/ADXをサブで表示(参考)")
// ====== GMMA(個別EMAを定義) ======
ema3 = ta.ema(close, 3)
ema5 = ta.ema(close, 5)
ema8 = ta.ema(close, 8)
ema10 = ta.ema(close, 10)
ema12 = ta.ema(close, 12)
ema15 = ta.ema(close, 15)
ema30 = ta.ema(close, 30)
ema35 = ta.ema(close, 35)
ema40 = ta.ema(close, 40)
ema45 = ta.ema(close, 45)
ema50 = ta.ema(close, 50)
ema60 = ta.ema(close, 60)
// GMMA平均(短期群/長期群)
shortMean = (ema3 + ema5 + ema8 + ema10 + ema12 + ema15) / 6.0
longMean = (ema30 + ema35 + ema40 + ema45 + ema50 + ema60) / 6.0
// ====== RSI ======
rsi = ta.rsi(close, rsiLen)
// ====== ADX(自前計算:Wilder) ======
trueRange(h, l, c) =>
math.max(h - l, math.max(math.abs(h - c[1]), math.abs(l - c[1])))
plusDM(h, l) =>
up = h - h[1]
dn = l[1] - l
up > dn and up > 0 ? up : 0
minusDM(h, l) =>
up = h - h[1]
dn = l[1] - l
dn > up and dn > 0 ? dn : 0
tr = trueRange(high, low, close)
pDM = plusDM(high, low)
mDM = minusDM(high, low)
trRma = ta.rma(tr, adxLen)
pdmRma = ta.rma(pDM, adxLen)
mdmRma = ta.rma(mDM, adxLen)
plusDI = 100 * (pdmRma / trRma)
minusDI = 100 * (mdmRma / trRma)
dx = 100 * math.abs(plusDI - minusDI) / math.max(plusDI + minusDI, 1e-10)
adx = ta.rma(dx, adxLen)
// ====== シグナル(サインのみ出す) ======
longCond = ta.crossover(shortMean, longMean) and rsi > 50 and adx >= adxThresh
shortCond = ta.crossunder(shortMean, longMean) and rsi < 50 and adx >= adxThresh
// サイン(矢印)のみ
plotshape(longCond, title="Long Signal", style=shape.triangleup, location=location.belowbar, color=color.new(color.teal, 0), size=size.tiny, text="LONG")
plotshape(shortCond, title="Short Signal", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny, text="SHORT")
// ====== GMMAリボン描画(トグルはseries側で制御) ======
plot(showGMMA ? ema3 : na, color=color.new(color.teal, 0), title="EMA3")
plot(showGMMA ? ema5 : na, color=color.new(color.teal, 10), title="EMA5")
plot(showGMMA ? ema8 : na, color=color.new(color.teal, 20), title="EMA8")
plot(showGMMA ? ema10 : na, color=color.new(color.teal, 30), title="EMA10")
plot(showGMMA ? ema12 : na, color=color.new(color.teal, 40), title="EMA12")
plot(showGMMA ? ema15 : na, color=color.new(color.teal, 50), title="EMA15")
plot(showGMMA ? ema30 : na, color=color.new(color.orange, 0), title="EMA30")
plot(showGMMA ? ema35 : na, color=color.new(color.orange, 10), title="EMA35")
plot(showGMMA ? ema40 : na, color=color.new(color.orange, 20), title="EMA40")
plot(showGMMA ? ema45 : na, color=color.new(color.orange, 30), title="EMA45")
plot(showGMMA ? ema50 : na, color=color.new(color.orange, 40), title="EMA50")
plot(showGMMA ? ema60 : na, color=color.new(color.orange, 50), title="EMA60")
// 短期/長期の平均線(同様にトグル)
plot(showMeans ? shortMean : na, "GMMA短期平均", color=color.new(color.aqua, 0), linewidth=2)
plot(showMeans ? longMean : na, "GMMA長期平均", color=color.new(color.fuchsia,0), linewidth=2)
// ====== (参考)RSI / ADX の表示もグローバルで制御 ======
plot(showRSIADX ? rsi : na, "RSI", color=color.new(color.purple, 0))
hline(50, "RSI 50", color=color.new(color.gray, 70))
plot(showRSIADX ? adx : na, "ADX", color=color.new(color.blue, 0))
hline(adxThresh, "ADX Thresh", color=color.new(color.blue, 50))
これを貼り付ければ、AI検証と同等の条件でサインが表示されます。
短期群と長期群の束が広がる瞬間を、RSIとADXが裏付けしてくれる構造です。
AIによる検証結果まとめ
| 構成 | PF | 備考 |
|---|---|---|
| GMMA単体 | 0.99 | トレンド遅延で負ける |
| GMMA+RSI | 1.01 | ノイズ減少だがトントン |
| TP/SL固定(2:1) | 1.05 | RR設計でプラス化 |
| GMMA+RSI+ADX | 1.26 | トレンド抽出で安定化 |
| TP/SL(2.5:1) | 1.32 | 最強設定・再現性高 |
結論: GMMAだけでは勝てない。
だが、RSI+ADX+RR2.5を組み合わせれば勝てる。
GMMAは「トレンドの地図」であり、RSIとADXは「エンジンとスピードメーター」。
AIが導き出した最強設定の手法はGMMA+RSI+ADX+TP/SL=50/20(RR2.5)。
それが、勝てるGMMAの形です。
-
特典&ご案内
今回の検証は Axioryのヒストリカルデータを使用しました。
(AXIORY口座を利用しない場合、同じ結果は再現できません)
詳細データや手法はPDFにまとめ、
今だけ【メルマガ登録者限定】で無償配布しています。
さらに、FX手法をAIで作る方法、EA化する方法を公開しています。
▶︎ 無料で今すぐ手に入れる(次回より有償化予定)
※この条件での配布は今回限り。
再配布は一切行いません。