【意味ない?勝てない?】一目均衡表だけで勝てるのか←AIが徹底検証|最強の組み合わせも紹介

インジケーター

結論

一目均衡表だけでは勝てない。

AIによる検証では、単体運用ではPF1.0以下、
つまりトントンという結果でした。

しかし、パラボリックSAR+200MA+RSI+時間帯フィルタを組み合わせると一変。
同じデータでPF1.208、勝率28.73%、安定した右肩上がりの曲線を描きました。

結論として、「一目は単体では勝てないが、流れ+勢い+時間を重ねれば最強」

というのがAIが導き出した答えです。

一目均衡表とは?

一目均衡表は、日本発祥のテクニカル指標で、

相場の「バランス」と「タイミング」を一枚のチャートで視覚化できるインジケーターです。

主に5つの要素から構成されています。

要素名 計算式 意味
転換線 (直近9期間の高値+安値)÷2 短期の方向性
基準線 (直近26期間の高値+安値)÷2 中期のトレンド基準
先行スパン1 (転換線+基準線)÷2(26本先行) 雲の上限/下限構成
先行スパン2 (52期間の高値+安値)÷2(26本先行) 雲の上下を形成
遅行スパン 現在の終値を26本過去に表示 過去とのバランス

この5本線が織りなす雲は、サポート・レジスタンス・トレンドの転換を視覚的に把握できる優秀なツールです。

ただし、「見やすい=勝てる」ではないのが落とし穴。


AIが実際に検証したところ、単体運用では思ったほど機能しないことがわかりました。

雲だけで勝てるのか?AIで検証

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

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

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

結果

    ① 総トレード数: 15,699
    ② 勝率: 49.95%
    ③ 平均リスクリワード比: 1.000
    ④ トータル損益: -320.6 pips
    ⑤ プロフィットファクター(PF): 0.998

→「雲の上下だけで判断」は、レンジでのダマシが多く、長期的には負け越し。

パラボリックSARを追加

「雲方向 × パラボリック方向一致」でフィルタ。

結果

    ① 総トレード数: 13,579
    ② 勝率: 50.02%
    ③ 平均リスクリワード比: 1.000
    ④ トータル損益: +119.4 pips
    ⑤ プロフィットファクター (PF): 1.001

→ ノイズが減り、エントリー精度は上がったが利益はまだ伸びず。

一目均衡表のパラメーターを厳しく

転換線=50, 基準線=100, 先行スパンB=200

結果

    ① 総トレード数: 12,262
    ② 勝率: 50.34%
    ③ 平均リスクリワード比: 1.000
    ④ トータル損益: +1,692.3 pips
    ⑤ プロフィットファクター(PF): 1.014

→ パラメータをさらに厳格化したことでトレード回数は減少しましたが、PFと損益は改善し、安定度が上がっています。

時間帯フィルタを追加(東京時間のみ)

結果

    ① 総トレード数: 3,261
    ② 勝率: 51.40%
    ③ 平均リスクリワード比: 1.000
    ④ トータル損益: +1,820.0 pips
    ⑤ PF: 1.057

→ ボラティリティの低い東京時間を除外することで“動く波だけを取る構に。これでようやくプラス圏に。

さらに、200MAを追加

一目均衡表(50,100,200)+PSAR+200MA+東京時間フィルタ(09:00〜15:00 JST)の条件を追加。

結果

    ① 総トレード数: 3,907
    ② 勝率: 51.52%
    ③ 平均リスクリワード比: 1.000(固定TP/SLのため)
    ④ トータル損益: +2,380.0 pips
    ⑤ プロフィットファクター (PF): 1.063

→ トレンドの方向性が揃ったときのみエントリーすることでダマシ減少。
これが雲の本来の力を引き出した瞬間です。

TP:SLを変更(2:1 → TP40 / SL20)

結果

    ① 総トレード数: 2,636
    ② 勝率: 35.62%
    ③ 平均リスクリワード比: 2.0
    ④ トータル損益: +3,620.0 pips
    ⑤ プロフィットファクター (PF): 1.107

→ 勝率は下がるがリスクリワードでカバー。


トレンドに乗ったときの伸びをしっかり取れている。

最終調整:RSIを追加+TP:SLを再調整(ロング:RSI>55/ショート:RSI<45)

一目(50,100,200)+PSAR+200MA+東京時間(09:00–15:00 JST)+RSI(14)フィルタ
TP=60pips / SL=20pips(RR=3.0)

最終結果

    ① 総トレード数: 1,991
    ② 勝率: 28.73%
    ③ 平均リスクリワード比: 2.997
    ④ トータル損益: +5,904.8 pips
    ⑤ プロフィットファクター (PF): 1.208

→ 勢いの方向を確認することで、エントリーの信頼度が大幅アップ。


ここでようやく、安定して勝てる一目手法が完成しました。

なぜ一目均衡表だけで勝てないのか?

AI解析では、主な原因は次の3つに分類されました。

雲が広すぎる

価格が中に入りやすく、レンジでサインが乱発。

タイミングが遅い

雲の色や形が変わる頃にはトレンドが終わっていることも多い。

勢いを測れない

方向性は見えるが、スピードがない。

つまり「行くか・止まるか」を判断できない。

そのため、「トレンド方向(200MA)」+「勢い(RSI)」+「加速点(パラボリック)」を重ねることで、機能する一目に進化します。

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

//@version=5
indicator("Ichimoku+PSAR+200MA+RSI+Tokyo (Entry count = backtest)", overlay=true)

// ===== Inputs =====
groupIch   = "Ichimoku"
convLen    = input.int(50,  "Tenkan", minval=1, group=groupIch)
baseLen    = input.int(100, "Kijun",  minval=1, group=groupIch)
spanBLen   = input.int(200, "Span B", minval=1, group=groupIch)
disp       = input.int(100, "Displacement (align cloud to 'now')", minval=1, group=groupIch)

groupPSAR  = "Parabolic SAR"
psarStart  = input.float(0.02, "PSAR Start",     step=0.01, group=groupPSAR)
psarInc    = input.float(0.02, "PSAR Increment", step=0.01, group=groupPSAR)
psarMax    = input.float(0.20, "PSAR Max",       step=0.01, group=groupPSAR)

groupMA    = "200MA"
maLen      = input.int(200, "SMA Length", minval=1, group=groupMA)

groupRSI   = "RSI Filter"
rsiLen     = input.int(14, "RSI Length", minval=1, group=groupRSI)
rsiLongThr = input.float(50.0, "Long if RSI >",  minval=0, maxval=100, step=0.1, group=groupRSI)
rsiShortThr= input.float(50.0, "Short if RSI <", minval=0, maxval=100, step=0.1, group=groupRSI)

groupSess  = "Session (JST)"
tokyoSess  = input.session("0900-1500", "Tokyo Session", group=groupSess)
sessTZ     = input.string("Asia/Tokyo", "Timezone", group=groupSess)

groupExec  = "Execution / TP-SL (pips)"
tpPips     = input.float(60.0, "TP (pips)", step=1.0, group=groupExec)
slPips     = input.float(20.0, "SL (pips)", step=1.0, group=groupExec)
pipSize    = input.float(0.01, "Pip size (USDJPY=0.01)", step=0.00001, group=groupExec)

groupDraw  = "Drawing"
showCloud  = input.bool(true, "Show Ichimoku Cloud", group=groupDraw)
showPSAR   = input.bool(true, "Show PSAR", group=groupDraw)
showMA     = input.bool(true, "Show MA200", group=groupDraw)
showLabels = input.bool(true, "Show Entry Labels", group=groupDraw)
showTPSL   = input.bool(true, "Draw TP/SL at Entry", group=groupDraw)

// ===== Ichimoku (align cloud to present) =====
conv  = (ta.highest(high, convLen) + ta.lowest(low, convLen)) / 2.0
base  = (ta.highest(high, baseLen) + ta.lowest(low, baseLen)) / 2.0
spanA = (conv + base) / 2.0
spanB = (ta.highest(high, spanBLen) + ta.lowest(low, spanBLen)) / 2.0

cloudA_now = spanA[disp]
cloudB_now = spanB[disp]
cloudUpper = math.max(cloudA_now, cloudB_now)
cloudLower = math.min(cloudA_now, cloudB_now)
cloudValid = not na(cloudUpper) and not na(cloudLower)

// ===== PSAR / MA / RSI / Session =====
psar   = ta.sar(psarStart, psarInc, psarMax)  // v5: (start, increment, maximum)
ma200  = ta.sma(close, maLen)
rsiVal = ta.rsi(close, rsiLen)
inTokyo = not na(time(timeframe.period, tokyoSess, sessTZ))

// ===== Signal conditions (on signal bar) =====
longCondIch   = cloudValid and close > cloudUpper
shortCondIch  = cloudValid and close < cloudLower
longCondPsar  = close > psar
shortCondPsar = close < psar
longCondMa    = close > ma200
shortCondMa   = close < ma200
longCondRsi   = rsiVal > rsiLongThr
shortCondRsi  = rsiVal < rsiShortThr

longSignalBar  = barstate.isconfirmed and inTokyo and longCondIch  and longCondPsar  and longCondMa  and longCondRsi
shortSignalBar = barstate.isconfirmed and inTokyo and shortCondIch and shortCondPsar and shortCondMa and shortCondRsi

// ===== Execution simulator (next-bar open entry, TP/SL, SL priority) =====
pipsToPrice(p) => p * pipSize

var int   pos = 0
var float entryPrice = na
var float tpPrice    = na
var float slPrice    = na
var bool  exitNow    = false

// 次足始値エントリー
enterLong  = pos == 0 and longSignalBar[1]
enterShort = pos == 0 and shortSignalBar[1]

// エントリー(今バー始値で約定)
if enterLong
    pos := 1
    entryPrice := open
    tpPrice := entryPrice + pipsToPrice(tpPips)
    slPrice := entryPrice - pipsToPrice(slPips)
    if showLabels
        label.new(bar_index, low, "LONG", style=label.style_label_up, textcolor=color.white, color=color.new(color.green, 0))
    if showTPSL
        line.new(bar_index, tpPrice, bar_index+1, tpPrice, extend=extend.right, color=color.new(color.green, 0), style=line.style_dotted)
        line.new(bar_index, slPrice, bar_index+1, slPrice, extend=extend.right, color=color.new(color.red, 0),   style=line.style_dotted)

if enterShort
    pos := -1
    entryPrice := open
    tpPrice := entryPrice - pipsToPrice(tpPips)
    slPrice := entryPrice + pipsToPrice(slPips)
    if showLabels
        label.new(bar_index, high, "SHORT", style=label.style_label_down, textcolor=color.white, color=color.new(color.red, 0))
    if showTPSL
        line.new(bar_index, tpPrice, bar_index+1, tpPrice, extend=extend.right, color=color.new(color.green, 0), style=line.style_dotted)
        line.new(bar_index, slPrice, bar_index+1, slPrice, extend=extend.right, color=color.new(color.red, 0),   style=line.style_dotted)

// 決済(SL優先 → TP)
if pos != 0
    exitNow := false
    if pos == 1
        hitSL = low <= slPrice
        hitTP = high >= tpPrice
        exitNow := hitSL or (not hitSL and hitTP)
    if pos == -1
        hitSL = high >= slPrice
        hitTP = low  <= tpPrice
        exitNow := hitSL or (not hitSL and hitTP)
    if exitNow
        pos := 0
        entryPrice := na
        tpPrice := na
        slPrice := na

// ===== Plots =====
plot(showMA ? ma200 : na, title="SMA 200", color=color.new(color.yellow, 0), linewidth=2)
// PSARは点描画の代わりに plot() を使用(安定)
plot(showPSAR ? psar : na, title="PSAR", color=color.new(color.fuchsia, 0), style=plot.style_cross, linewidth=1)

// —— Cloud (SAFE): use plot() handles + fill()
cloudColor = longCondIch ? color.new(color.teal, 80) : shortCondIch ? color.new(color.red, 80) : color.new(color.gray, 85)
pA = plot(showCloud and not na(cloudA_now) ? cloudA_now : na, title="Senkou Span A (aligned)", color=color.new(color.teal, 0))
pB = plot(showCloud and not na(cloudB_now) ? cloudB_now : na, title="Senkou Span B (aligned)", color=color.new(color.red, 0))
fill(pA, pB, color=cloudColor)

これをTradingViewに貼り付ければ、
一目+パラボリック+200MA+RSIの複合フィルタでサインを出せます。


チャートのノイズが劇的に減り、方向の明確な波だけを捉えられます。

一目均衡表だけで勝てる?勝てない?

AI検証の結果、一目均衡表だけでは勝てない。

しかし、次の4つを組み合わせると安定して勝てる手法に変わる。

    ・パラボリックSAR:エントリーポイントを明確に
    ・200MA:大きな流れを確認
    ・RSI:勢いを可視化
    ・時間帯フィルタ:動く時間だけで戦う

そして設定値はこれが最強。

TP60 / SL20(RR 3:1)

この構成なら、「一目=遅い」という常識を覆し、むしろ相のリズムを最も正確に捉える”ツールに変わります。

FXは雲だけでは勝てない。


だが、一目均衡表を正しく組み合わせた人だけが勝てる。

    特典&ご案内

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

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

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