確認日: 2026-09-02 / 本記事は計算方法の解説であり、特定業者の推奨ではありません

海外FXのスプレッドは狭いほど得なのか
実質コストの計算式とEAが実運用で負ける本当の理由

「スプレッドが狭い口座を選べば有利」——これは半分しか正しくありません。スプレッドが0.0pipsでも往復手数料が10ドルかかる口座と、スプレッド1.6pipsで手数料無料の口座では、ロット数によって有利不利が逆転します。この記事は、その分岐点を計算で求め、さらに「バックテストでは勝つEAが実運用で負ける」現象の最大要因がスプレッドの扱いにあることを数字で示します。

この記事の立場について

当サイトは特定の海外FX業者を推奨したり、ランキング形式で比較したりすることはありません。金融商品取引業の登録を行っていない立場で業者の勧誘・仲介にあたる行為を避けるためです。
本記事が扱うのは「スプレッドという指標をどう読み、実質コストをどう計算するか」という方法論です。数値はすべて計算例であり、実際のスプレッドは業者・銘柄・時間帯・相場状況により常に変動します。

目次

  1. 結論|比較すべきは「スプレッド」ではなく「実質コスト」
  2. スプレッドの基礎|pipsと円の換算を間違えない
  3. スプレッドコスト計算機
  4. 口座タイプの損益分岐点を計算する
  5. 変動スプレッドの実態|時間帯・指標・週明け
  6. EAがバックテストで勝ち実運用で負ける最大の理由
  7. 自分の口座のスプレッドを実測するMQL5スクリプト
  8. スプレッドが期待値・ペイオフレシオに与える影響
  9. 口座を評価するときのチェックリスト
  10. よくある疑問Q&A

結論|比較すべきは「スプレッド」ではなく「実質コスト」

スプレッドは取引コストの一部でしかありません。実際に口座から失われるコストは、次の4つの合計です。

実質取引コストの構成

実質コスト = スプレッド + 取引手数料 + スワップ + スリッページ

要素 内容 見落とされやすい点
スプレッド 売値と買値の差。エントリーした瞬間に含み損として発生 広告される「最小」「平均」は条件が異なる
取引手数料 低スプレッド口座で往復いくら、という形で課金される これを無視した比較が最も多い誤り
スワップ ポジションを日をまたいで保有したときの金利差調整 マイナススワップは長期保有で無視できない額に
スリッページ 意図した価格と実際の約定価格の差 指標時・薄商い時に膨らむ。統計を取らないと見えない
この記事で最も伝えたい1点

スプレッドの絶対値ではなく、「あなたの取引スタイルにおける年間の実質コスト」で比較してください。
年間100回しか取引しない人と、EAで年間5,000回取引する人では、同じ0.5pipsの差が50倍の重みを持ちます。逆に、数百pipsを狙うスイングトレードなら1pipsの差はほぼ誤差です。「良いスプレッド」は取引頻度と利幅によって定義が変わります。

スプレッドの基礎|pipsと円の換算を間違えない

計算の前に、単位を固定します。ここを曖昧にしたまま比較しても意味がありません。

通貨ペア 1pipの定義 1ロット(10万通貨)の1pip 0.1ロットの1pip
USDJPY など円建て 0.01円(1銭) 1,000円 100円
EURUSD などドル建て 0.0001ドル 10ドル(約1,500円) 1ドル(約150円)
ゴールド(XAUUSD) 0.1ドル(業者により0.01) 銘柄仕様で要確認 同左
ゴールドのpip定義は業者ごとに違う

「ゴールドのスプレッドは35」と言われても、それが3.5ドルなのか0.35ドルなのかは業者の定義次第です。比較するときは必ずMT4/MT5の銘柄仕様(気配値で右クリック →「仕様」)で契約サイズと最小変動単位を確認してください。
ゴールドはpips表記の混乱が最も多い銘柄で、ここを取り違えると実質コストの見積もりが10倍ずれます。

スプレッドコストの計算式

1往復のスプレッドコスト = スプレッド(pips) × ロット数 × 1pipの価値

USDJPYで1.6pips・1ロットなら、1往復あたり 1.6 × 1 × 1,000 = 1,600円。
スプレッドは往復ではなく「1回のエントリーで1回発生」します(エントリー時にスプレッド分の含み損を背負い、決済はその状態から行われるため)。一方、取引手数料は「往復いくら」で表示されるのが一般的です。この非対称に注意してください。

スプレッドコスト計算機

自分の取引スタイルで、年間いくら払っているのかを確認してください。取引回数を増やしたときのコストの伸び方が、この記事の主題です。

実質取引コスト計算機

pips
円 / 1ロット往復
lot
円(円建てペアは1000)
回 / 年
pips
1取引あたりのコスト—
年間の総コスト—
利幅に対するコストの割合—
コストを差し引いた実質利幅—
収支トントンに必要な勝率(ペイオフ1.0想定)—

※ スワップ・スリッページは含まない概算です。実際のコストは約定状況により変動します。計算上の値であり、取引結果を保証するものではありません。

「1回の平均利幅」を小さくしていってください

初期値の10pipsから、5pips、3pips と下げてみてください。コストの割合が跳ね上がり、トントンに必要な勝率が急速に上昇するのが分かります。
これがスキャルピングEAが理論上は優秀に見えても実運用で成立しにくい理由です。利幅が小さいほど、スプレッドは相対的な巨人になります。逆に利幅100pipsのスイングなら、1.6pipsは1.6%のコストにすぎません。

口座タイプの損益分岐点を計算する

海外FX業者は一般に、2系統の口座を用意しています。この2つはどちらが優れているという話ではなく、ロット数によって有利不利が入れ替わります。

口座系統 スプレッド 取引手数料 向いている使い方
スタンダード系
(手数料無料型)
広め(例:1.6pips) 無料 小ロット・低頻度・ボーナス活用
低スプレッド系
(手数料型)
狭い(例:0.1pips) 往復で課金 大ロット・高頻度・スキャルピング

分岐点の求め方

2つの口座タイプが等コストになるロット数

スタンダード系のコストとゼロ系のコストが等しくなる点を求めます。

スタンダードのコスト = Sstd × Lot × PipValue
低スプレッド系のコスト = Slow × Lot × PipValue + Commission × Lot

両者が等しくなる条件:
(Sstd − Slow) × PipValue = Commission

注目すべきは、この式から Lot が消えることです。スプレッドも手数料もロットに比例するため、ロット数では有利不利は変わりません。決まるのは「スプレッド差 × 1pip価値」と「往復手数料」の大小だけです。

つまり判定は驚くほど単純

USDJPY(1pip = 1,000円 / 1ロット)で、スタンダード1.6pips・低スプレッド系0.1pips・往復手数料1,000円のケースなら:

スプレッド差の価値 = (1.6 − 0.1) × 1,000 = 1,500円/手数料 = 1,000円

1,500円 > 1,000円 なので低スプレッド系のほうが1ロットあたり500円有利——ロット数に関係なく、常に有利です。
逆に手数料が2,000円なら、常にスタンダード系が有利になります。「大ロットなら手数料型が得」という通説は、この式の上では成立しません。上の計算機で両方の条件を入れて比較してみてください。

口座タイプごとの実際のスプレッド・手数料・ボーナス対象可否については XM口座タイプ4種類を徹底比較 にまとめています。低スプレッド系の口座はボーナス対象外であることが多いため、ボーナスによる証拠金の厚みとのトレードオフも判断材料になります。

変動スプレッドの実態|時間帯・指標・週明け

海外FXの多くは変動スプレッドです。広告に出る数字は「平均」または「最小」であり、あなたが実際に払う値ではありません。

時間帯・局面 スプレッドの傾向 EA運用での対応
ロンドン〜NY重複
(日本時間 21〜25時頃)
最も狭い。流動性が最大 高頻度EAはこの時間帯に絞るのが基本
東京時間 やや広い。通貨ペアによる クロス円以外は不利になりやすい
早朝(日本時間 5〜8時頃) 大幅に拡大。流動性が枯れる 取引停止フィルタを必ず入れる
重要指標発表の前後 数倍〜数十倍に拡大 指標カレンダー連動で停止
週明けオープン直後 窓とスプレッド拡大が同時 月曜early は稼働させない設計が無難
年末年始・クリスマス 長期にわたり拡大 → 取引時間スケジュールで事前確認
「平均スプレッド」の落とし穴

平均スプレッドが1.6pipsでも、あなたのEAが早朝と指標時にしかエントリーしない設計なら、実際に払っているのは平均値ではありません。
逆に、流動性の高い時間帯にしか取引しないEAなら、実効スプレッドは平均より狭くなります。重要なのは「業者の平均」ではなく「自分の約定履歴における実測値」です。その測り方を次章で扱います。

EAがバックテストで勝ち実運用で負ける最大の理由

ここが本記事の核心です。バックテストと実運用の乖離要因として、スプレッドの扱いは最も大きく、そして最も見落とされます。

MT4/MT5ストラテジーテスターのスプレッド設定という罠

ストラテジーテスターでは、スプレッドを「現在値」または任意の固定値で設定できます。多くの人はここを深く考えず、テスト実行時のスプレッド(たまたま狭い時間帯の値かもしれない)でテストします。

結果として「スプレッド1.0pips固定」でバックテストしたEAが、実運用では平均2.5pipsを払う——という事態が起きます。1トレードあたり1.5pipsの差が、年間3,000トレードなら4,500pipsの差です。1ロットなら450万円。これだけでほとんどの戦略の優位性は消えます。

スプレッド設定を変えるとバックテスト結果はどう変わるか

平均利幅8pips・年間3,000トレード・勝率55%・1ロットのスキャルピングEAを想定した計算例です。

テスト時のスプレッド設定 1トレード実質利幅 年間コスト 評価
0.5pips(理想的) 7.5 pips 150万円 優秀なEAに見える
1.0pips 7.0 pips 300万円 まだ勝てる
1.6pips(現実的) 6.4 pips 480万円 優位性が縮む
2.5pips(早朝・指標込み) 5.5 pips 750万円 利益がほぼ消える
3.5pips(悪条件) 4.5 pips 1,050万円 明確に赤字化

※ 年間コスト = スプレッド × 3,000回 × 1,000円(1ロット・円建てペア想定)。ロジック・勝率は一切変えず、スプレッド設定だけを変えた場合の比較です。計算例であり実際の運用成果を示すものではありません。

安全側のバックテスト手順

① 実測した平均スプレッドではなく、実測値の上位25%(悪いほう)でテストする
② それでもプラスなら、次にスリッページを加味する
③ ティックデータでの検証時も、スプレッドは楽観値を使わない

「最良条件で勝つEA」は存在して当たり前です。知りたいのは「悪条件でも生き残るか」であって、その閾値を決めるのがスプレッド設定です。バックテストの信頼性を統計的に検証する方法は 過剰最適化を数値で検出する を参照してください。

自分の口座のスプレッドを実測するMQL5スクリプト

推測をやめて測りましょう。実際にあなたの口座で、あなたが取引する時間帯に、いくらのスプレッドが提示されているかを記録するスクリプトです。

SpreadLogger.mq5(MT5 / EAとしてチャートに適用)サンプル1
//+------------------------------------------------------------------+
//| 本コードは本人利用に限り自由に使用可。                             |
//| 再配布・商用利用・販売は禁止。                                     |
//| スプレッドをティックごとに記録し、CSVへ出力する                     |
//+------------------------------------------------------------------+
#property strict

input int    InpFlushSec = 60;      // 何秒ごとにファイルへ書き出すか
input string InpFileName = "spread_log.csv";

int    g_handle = INVALID_HANDLE;
datetime g_lastFlush = 0;

int OnInit()
{
   // 共通フォルダではなく MQL5/Files に出力
   g_handle = FileOpen(InpFileName, FILE_WRITE|FILE_READ|FILE_CSV|FILE_ANSI, ',');
   if(g_handle == INVALID_HANDLE)
   {
      Print("ファイルを開けません: ", GetLastError());
      return(INIT_FAILED);
   }
   FileSeek(g_handle, 0, SEEK_END);
   // ヘッダは空ファイルのときだけ書く
   if(FileTell(g_handle) == 0)
      FileWrite(g_handle, "datetime", "symbol", "bid", "ask", "spread_points", "spread_pips");
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   if(g_handle != INVALID_HANDLE) FileClose(g_handle);
}

void OnTick()
{
   MqlTick t;
   if(!SymbolInfoTick(_Symbol, t)) return;

   double point  = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
   int    digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);
   if(point <= 0.0) return;

   // 3桁/5桁業者は 10point = 1pip
   double pipSize = (digits == 3 || digits == 5) ? point * 10.0 : point;

   double spreadPoints = (t.ask - t.bid) / point;
   double spreadPips   = (t.ask - t.bid) / pipSize;

   FileWrite(g_handle,
             TimeToString(t.time, TIME_DATE|TIME_SECONDS),
             _Symbol,
             DoubleToString(t.bid, digits),
             DoubleToString(t.ask, digits),
             DoubleToString(spreadPoints, 1),
             DoubleToString(spreadPips, 2));

   if(TimeCurrent() - g_lastFlush >= InpFlushSec)
   {
      FileFlush(g_handle);
      g_lastFlush = TimeCurrent();
   }
}

1週間ほど動かして spread_log.csv を貯めたら、Pythonで集計します。平均だけでなく、時間帯別の分布とパーセンタイルを見るのが要点です。

analyze_spread.pyサンプル2
# 本コードは本人利用に限り自由に使用可。再配布・商用利用・販売は禁止。
# MT5が出力した spread_log.csv を時間帯別に集計する
import pandas as pd

df = pd.read_csv("spread_log.csv")
df["datetime"] = pd.to_datetime(df["datetime"])
df = df.set_index("datetime")

# MT5サーバー時間 -> 日本時間に補正(サーバーのGMTオフセットに合わせて調整)
SERVER_TO_JST_HOURS = 6
df.index = df.index + pd.Timedelta(hours=SERVER_TO_JST_HOURS)

df["hour"] = df.index.hour

summary = df.groupby("hour")["spread_pips"].agg(
    count="count",
    mean="mean",
    median="median",
    p75=lambda s: s.quantile(0.75),
    p95=lambda s: s.quantile(0.95),
    max="max",
).round(2)

print("=== 時間帯別スプレッド(日本時間・pips) ===")
print(summary.to_string())

print("\n=== 全体 ===")
print(f"平均          : {df['spread_pips'].mean():.2f} pips")
print(f"中央値        : {df['spread_pips'].median():.2f} pips")
print(f"75パーセンタイル: {df['spread_pips'].quantile(0.75):.2f} pips  <- バックテストにはこの値を使う")
print(f"95パーセンタイル: {df['spread_pips'].quantile(0.95):.2f} pips")

# 稼働させたい時間帯だけを抜き出して実効スプレッドを見る
TRADING_HOURS = range(21, 26)   # 日本時間21時〜翌1時(25=翌1時)
mask = df["hour"].isin([h % 24 for h in TRADING_HOURS])
print(f"\n稼働時間帯の平均: {df.loc[mask, 'spread_pips'].mean():.2f} pips")
この集計から得られる3つの判断材料

① バックテストに入れるべきスプレッド値(75パーセンタイルを推奨)
② EAを稼働させるべき時間帯(スプレッドが安定して狭い時間帯)
③ 取引を停止すべき時間帯(p95が跳ねている時間帯)

広告の「平均スプレッド」と、あなたの実測値がどれだけ違うかを一度確認してください。この差が、そのまま「想定と現実のズレ」の大きさです。

スプレッドが期待値・ペイオフレシオに与える影響

スプレッドは「利益を削る」だけでなく「勝率とペイオフレシオの両方を悪化させます」。ここが直感に反する部分です。

スプレッドが期待値に効く仕組み

利確幅 TP、損切幅 SL、スプレッド S とすると、実質的な値は次のようになります。

実質の利確幅 = TP − S (利確が遠のく)
実質の損切幅 = SL + S (損切りが近づく)

実質ペイオフレシオ = (TP − S) / (SL + S)

分子が減り、分母が増えます。スプレッドはペイオフレシオを二重に悪化させるということです。さらに、損切幅が実質的に近づくことで勝率そのものも下がります。

TP10pips / SL10pips のEAの場合

スプレッド 実質TP 実質SL 実質ペイオフ 必要勝率
0.0 pips 10.0 10.0 1.00 50.0%
0.5 pips 9.5 10.5 0.90 52.5%
1.0 pips 9.0 11.0 0.82 55.0%
1.6 pips 8.4 11.6 0.72 58.0%
2.5 pips 7.5 12.5 0.60 62.5%

※ 必要勝率 = 実質SL / (実質TP + 実質SL)。手数料・スワップ・スリッページを除いた計算値です。

スプレッド1.6pipsは「勝率を8ポイント要求する」

TP/SLが10pipsのEAにとって、スプレッド1.6pipsは「必要勝率が50%から58%に上がる」ことを意味します。勝率を8ポイント改善するのは、ロジック改良として極めて困難です。
つまり、スプレッドの改善はロジック改良より投資対効果が高い場合があります。そしてこの効果は、TP/SLが小さいほど劇的に大きくなります。TP100pipsのEAなら、同じ1.6pipsでも必要勝率の上昇は1ポイント未満です。

期待値・破産確率・ケリー基準の観点からのリスク設計は FX自動売買で億り人になる条件を数字で暴く で詳しく計算しています。

口座タイプ別のスプレッド・手数料を確認する

スプレッドと取引手数料の条件は口座タイプごとに異なり、随時変更されます。本記事の数値はすべて計算例です。実際の条件は公式サイトと、MT4/MT5の銘柄仕様で確認してください。

XMTrading公式サイトで口座タイプ別の条件を確認

口座を評価するときのチェックリスト

スプレッド関連の確認項目
  • ☐ 1. 提示されている数値は「最小」か「平均」か。条件が明記されているか
  • ☐ 2. 取引手数料は往復いくらか。スプレッド差の価値と比較したか
  • ☐ 3. 自分が取引する時間帯のスプレッドを実測したか
  • ☐ 4. 自分が取引する銘柄で確認したか(ドル円だけ見ていないか)
  • ☐ 5. ゴールド等はMT4/MT5の銘柄仕様でpip定義を確認したか
  • ☐ 6. スワップを含めた保有コストを確認したか(日跨ぎする戦略の場合)
  • ☐ 7. 低スプレッド口座がボーナス対象外でないか確認したか
  • ☐ 8. バックテストのスプレッド設定を実測の75パーセンタイルにしたか
  • ☐ 9. 約定履歴から実際のスリッページを集計したか
  • ☐ 10. 年間の実質コスト総額を計算したか

よくある疑問Q&A

スプレッドが狭い口座を選べば必ず有利ですか?
いいえ。低スプレッド口座には取引手数料が課されるのが一般的で、「スプレッド差 × 1pip価値」と「往復手数料」を比較しなければ判定できません。本記事の 損益分岐点のセクション の式で計算してください。なお、この判定はロット数に依存しません。加えて、低スプレッド口座はボーナス対象外であることが多く、証拠金の厚みという別の要素も絡みます。
「平均スプレッド0.1pips」のような広告はどう読むべきですか?
測定条件を確認してください。どの時間帯の、どの期間の、どの銘柄の平均か。流動性が最も高い時間帯だけを切り出せば数字は良くなります。最も信頼できるのは自分の口座で実測した値です。本記事の MQL5スクリプト で1週間記録すれば、広告値との差が分かります。
スプレッドはいつ発生しますか?往復で2回かかりますか?
エントリー時に1回です。買いで入るとAsk(高いほう)で約定し、決済はBid(安いほう)で行われるため、その差=スプレッドの分だけ最初から含み損を背負う形になります。一方取引手数料は「往復でいくら」と表示されるのが一般的で、単位系が異なります。比較するときはこの非対称に注意してください。
スキャルピングEAは海外FXでは成立しないのですか?
成立しないわけではありませんが、利幅が小さいほどスプレッドの相対的な重みが激増します。TP10pipsでスプレッド1.6pipsなら必要勝率は58%、TP5pipsなら約64%が必要になります。スプレッドの狭い時間帯に絞る・低スプレッド口座を使う・利幅を広げるのいずれかで対応するのが定石です。なお、業者のレート配信遅延を突く手法は規約違反になるため、禁止行為を必ず確認してください。
バックテストのスプレッドは何pipsに設定すべきですか?
自分の口座で実測した値の75パーセンタイル(悪いほう)を推奨します。平均値では楽観的すぎ、最悪値では悲観的すぎます。「多少条件が悪くても生き残るか」を確認するのが目的だからです。実測方法は スプレッド実測スクリプト のセクションにあります。最良条件で勝つEAは当たり前に存在するので、それを確認しても意味がありません。
スリッページはどう見積もればよいですか?
MT4/MT5の約定履歴から、注文価格と実際の約定価格の差を集計します。指標時・早朝・週明けで大きく偏るため、時間帯別に見るのが有効です。実務上はスプレッドの実測値に、平均スリッページを上乗せした値をバックテストの実質コストとして扱うと現実に近づきます。
スプレッドとレバレッジ、どちらを優先して口座を選ぶべきですか?
用途によります。取引回数が多い運用ではスプレッドが累積で効き、資金効率や耐久力を重視するならレバレッジと証拠金設計が効きます。ただしレバレッジは残高によって自動的に引き下げられる仕組みがあるため、そちらも事前に把握が必要です → XMのレバレッジ制限。年間取引回数が多いほどスプレッドの優先度が上がる、というのが目安になります。

注意事項・免責事項

投資は自己判断・自己責任でお願いいたします。本サイトの情報・ツール・ソフトウェアを参考・使用して、取引をされて何らかの損失を被られても、当サイトでは責任は一切負いません(間接的・付随的な障害・損失も含め一切の責任を負いません)。自己責任でご利用ください。

当サイトからダウンロードしたプログラム・EAは本人利用に限り完全無料でご利用いただけます。プログラムの全てまたは一部の複製・コピー・リバースエンジニアリング・改変・2次配布・商用利用・転売・販売等は一切禁止いたします。違反を発見した場合は法的処置を行います。

当サイト上に存在するソフトウェア・ツール・文章・画像・動画等の著作物を無断転載することを禁止します。引用の範囲を超えるものについては、法的処置を行います。

当サイトで配布するツール・ソフトウェアは無料提供ですのでサポートなどは行っておりません。万が一、ツールやソフトウェアに不具合や問題があっても当サイトでは修正・対応などができない場合があります。ご利用の環境でトラブルが発生しても当サイトでは助言することはできませんので自己責任でご利用ください。

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。当サイト掲載情報やリンク先の掲載情報の合法性、正確性、道徳性、最新性、適切性、著作権の許諾や有無など、その内容については一切の保証を致しかねます。

当サイトは、ご訪問いただいた時間、訪問者のアクセス元のホスト名、IPアドレス、OSとブラウザのバージョン、リンク元のURL、モニターの情報等のパソコン環境情報を収集し、アクセス解析をしております。この目的は訪問者が検索サイトからご訪問いただいた場合、どのような検索で当サイトに来訪いただいたかの解析にのみ使用しており、第3者に公開はいたしません。また、個人を特定するものではありません。