ラウンドナンバーだけで勝てる?←AIで検証した結果

非インジケーター

結論:ラウンドナンバーだけでは勝てない

AIによる長期検証の結果、ラウンドナンバー(.00/.50)だけでは勝てない。

勝率は 49.45%、プロフィットファクター(PF)は 0.978。


つまり「勝っているようで負けている」典型的な統計結果だ。

しかし、ここに RSI(相対力指数) を組み合わせることで状況が一変。


PFは 1.229 に上昇し、安定して右肩上がりのカーブを描いた。

AIの結論は明確だ。

「ラウンドナンバーは確かに意識されるが、方向の裏づけがなければ勝てない。」

ラウンドナンバーとは

ラウンドナンバー(キリ番)とは、0.00や0.50といったキリのいい価格帯を指す。

    ・USDJPY=150.00、150.50、151.00
    ・EURUSD=1.0900、1.0950、1.1000

このような水準は、トレーダー心理の節目として注文が集中しやすい。

「150円を超えたら買う」「151円にストップを置く」


といった形で、多くのトレーダーが意識する価格帯である。

その結果、ラウンドナンバー付近では

    ・反発(サポート・レジスタンス)
    ・ブレイク(抜けて加速)
    ・フェイク(だまし)

が頻発する。

つまり、チャート上の「人間心理の集積点」がラウンドナンバーなのだ。

ラウンドナンバーが人気の理由

ラウンドナンバーがこれほど多くのトレーダーに好まれる理由は、シンプルで信じやすい からだ。

    ・数字がきれいで覚えやすい
    ・誰が見ても同じ節目
    ・機関投資家や大口注文も集まりやすい

特にYouTubeやSNSでは、「.00で反発」「.50ブレイクで順張り」といった解説が数多く出回っており、わかりやすさがそのまま信仰につながっている。

また、実際にラウンドナンバー付近で出来高が増えるのも事実。


AIも「相場の意識点としての存在価値」は認めている。

しかし、それが「勝てる根拠」になるかというと別問題だ。

AI検証:00・50ライン+TP/SL固定15pips

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

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

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

結果

    ① 総トレード数:11,393
    ② 勝率:49.45%
    ③ 平均リスクリワード比:1.00(固定TP/SL)
    ④ トータル損益:-1,875.0 pips
    ⑤ プロフィットファクター(PF):0.978

→ 統計的に誤差レベル。


つまり「手数料とスプレッドを考慮すると確実にマイナス」。

再検証:ラウンドナンバー+RSIフィルタ

次に、方向性を補うためにRSIを組み合わせた。

RSIフィルタ
RSI期間:14(5分足)
条件:
RSI > 50 → 上昇優勢(買い圧力が強い) → ロングブレイクのみ許可
RSI < 50 → 下降優勢(売り圧力が強い) → ショートブレイクのみ許可

結果

    ① 総トレード数:7,507
    ② 勝率:54.94%
    ③ 平均リスクリワード比:1.00
    ④ トータル損益:+14,820.0 pips
    ⑤ プロフィットファクター(PF):1.219

→ 明確に右肩上がりのカーブを形成。

RSIで勢いのある方向だけを取ることで、だましを回避し、トレンドフォロー型の成績に変化した。

ラウンドナンバーだけで勝てない理由

AI解析によると、ラウンドナンバーが単体で機能しない理由は主に3つ。

方向性がランダム

ラウンドナンバーは売買が交錯する「戦場」。


反発かブレイクかは常に50/50であり、期待値はゼロに近い。

短期ノイズに弱い

5分足レベルではスプレッドとノイズで優位性が消える。

反応が早すぎても遅すぎても負けトレードになる。

心理的バイアスが働く

「150.00は意識される」という思い込みが、無意識に逆張りを誘発する。


この集団認知バイアスが、むしろ勝率を下げている。

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

//@version=5
indicator("Round Number Breakout + RSI Filter (00/50, M5 RSI14)", overlay=true, max_labels_count=500, max_lines_count=500)

// ── 入力
use00     = input.bool(true,  "検出: .00 レベル", inline="lv")
use50     = input.bool(true,  "検出: .50 レベル", inline="lv")
rsiLen    = input.int(14,     "RSI期間(5分足)", minval=2)
rsiTf     = input.timeframe("5", "RSIの計算足(推奨=5)")
rsiThrHi  = input.float(50.0, "RSIロング閾値(超えたら買いのみ)", minval=0, maxval=100, step=0.5)
rsiThrLo  = input.float(50.0, "RSIショート閾値(下回ったら売りのみ)", minval=0, maxval=100, step=0.5)
showTPSL  = input.bool(true,  "TP/SL目安ラインを表示")
tpPips    = input.float(20.0, "TP(pips)", minval=1)
slPips    = input.float(20.0, "SL(pips)", minval=1)
showLevels= input.bool(false, "直近に触れたRNを水平線で表示")

// ── 価格単位(JPYペアは0.01)
var float pip = syminfo.currency == "JPY" ? 0.01 : 0.0001

// ── RSI(5分足で計算して現在足に前方埋め)
rsi5 = request.security(syminfo.tickerid, rsiTf, ta.rsi(close, rsiLen), lookahead=barmerge.lookahead_on)

// ── このバーの高安から、含まれる .00/.50 レベルをスキャン
low2  = math.floor(low * 2.0)
high2 = math.ceil(high * 2.0)

var bool   longSig = false
var bool   shortSig = false
var float  hitLevel = na
longSig := false
shortSig := false
hitLevel := na

// レベルが.00/.50かどうか
isHalf(x) =>
    frac = x - math.floor(x)
    math.round(frac * 10.0) == 5

// 対象レベル判定
levelEnabled(x) =>
    isHalf(x) ? use50 : use00

// バー内で最初に触れたラウンドナンバーを走査して決定
for n = low2 to high2
    level = n / 2.0
    if levelEnabled(level) and (low <= level and high >= level)
        // RSIフィルタ:上方向は rsi > rsiThrHi、下方向は rsi < rsiThrLo
        if level >= open and rsi5 > rsiThrHi and close >= level
            longSig := true
            hitLevel := level
            break
        if level < open and rsi5 < rsiThrLo and close <= level
            shortSig := true
            hitLevel := level
            break

// ── シグナル描画
plotshape(longSig,  title="RN+RSI Long",  style=shape.triangleup,   location=location.belowbar, size=size.tiny, text="RN▲", color=color.new(color.teal, 0))
plotshape(shortSig, title="RN+RSI Short", style=shape.triangledown, location=location.abovebar, size=size.tiny, text="RN▼", color=color.new(color.orange, 0))

// ── TP/SL目安ライン(オプション)
var line tpLine = na
var line slLine = na
if showTPSL and not na(hitLevel) and (longSig or shortSig)
    line.delete(tpLine)
    line.delete(slLine)
    if longSig
        tpLine := line.new(bar_index, hitLevel + tpPips * pip, bar_index + 1, hitLevel + tpPips * pip, extend=extend.right, color=color.new(color.green, 0))
        slLine := line.new(bar_index, hitLevel - slPips * pip, bar_index + 1, hitLevel - slPips * pip, extend=extend.right, color=color.new(color.red, 0))
    if shortSig
        tpLine := line.new(bar_index, hitLevel - tpPips * pip, bar_index + 1, hitLevel - tpPips * pip, extend=extend.right, color=color.new(color.green, 0))
        slLine := line.new(bar_index, hitLevel + slPips * pip, bar_index + 1, hitLevel + slPips * pip, extend=extend.right, color=color.new(color.red, 0))

// ── アラート設定
alertcondition(longSig,  title="RN+RSI Long",  message="RoundNumber Breakout LONG at {{close}}")
alertcondition(shortSig, title="RN+RSI Short", message="RoundNumber Breakout SHORT at {{close}}")

まとめ

手法 勝率 PF 備考
ラウンドナンバー単体 (.00/.50) 49.45% 0.978 手数料負けレベル
ラウンドナンバー+RSI 54.94% 1.219 有意な優位性を確認

結論として、ラウンドナンバーだけでは勝てない。

だが、RSIやトレンドフィルタを組み合わせることで「意識される節目」から「狙える節目」へと変わる。

節目を使うな、節目を読め。

AIが導いたラウンドナンバーの真実はそこにあった。

    特典&ご案内

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

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

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