どうもこんにちは。戦術トレードラボのラボ長です。
EAを自作してバックテストをすると、つい「エントリーの条件」ばかりに目が行きます。
でも、成績を静かに削っていくものがもうひとつあります。スプレッドと、約定のズレ(スリッページ)です。
私は非エンジニアの兼業トレーダーで、Claude CodeというAIエージェントと一緒に、自分の手法をMT4のEAにしています。
その途中で、「勝てそうに見えたアイデアが、コストを入れたら全部ただのマイナスだった」という経験を何度もしました。
この記事では、これからEA作りやFX自動売買を始める方に向けて、スプレッドと約定のズレがEAの成績にどう効くのか、バックテストでどう確かめればいいのかをまとめます。
スプレッドと約定のズレとは
まず、言葉をそろえておきます。
- スプレッド:買値(Ask)と売値(Bid)の差です。新しくポジションを持った瞬間、だいたいこの分だけマイナスから始まります。実質的な取引コストです。
- 約定のズレ(スリッページ):注文を出した値段と、実際に約定した値段の差です。値動きが速いときや、指標発表の前後に起きやすくなります。
- 窓開け(ギャップ):週明けなどに、前の値段から飛んで始まることです。損切りの注文を置いていても、その値段では決済されず、もっと不利な値段で決まることがあります。
どれも、1回1回は小さな差です。
ただ、EAは同じことを何百回、何千回とくり返します。小さな差が、回数の分だけ積み上がるのがEAの怖いところです。
コストの重さは「損切り幅」で決まる
同じスプレッドでも、EAによって重さがまったく違います。
目安になるのが、スプレッドが損切り幅の何%にあたるかです。
| 損切り幅 | スプレッド | 損切り1回分に対するスプレッド |
|---|---|---|
| 5pips | 0.5pips | 10% |
| 10pips | 0.5pips | 5% |
| 30pips | 0.5pips | 約1.7% |
| 5pips | 2pips(朝などに広がったとき) | 40% |
(数字は説明用の例です)
損切り幅が小さい短期売買ほど、1回ごとに払うコストの割合が大きくなります。
勝率が5割のコイン投げのようなエントリーでも、コストを引けば、その割合の分だけ確実にマイナスになります。
短期売買のEAほど、エントリーの優位性がコストを上回っているかが勝負になる、ということです。
私の実例:「勝てそう」が全部「ランダム−スプレッド」だった
一晩で、短い時間足のエントリーを4種類試したことがあります。
移動平均線にタッチしたら入る、ボリンジャーバンドの外に長いヒゲが出たら入る、ダウンロードしたインジケーターのサインで入る、など。
結果は4種類とも、「でたらめに入ったときの成績から、スプレッドを引いた成績」とほぼ同じでした(バックテスト・過去データ)。
1回あたりの負けが、スプレッドと約定のズレの分と、ぴったり重なっていたんです。
その後、時間帯(東京・ロンドン・ニューヨーク)ごとにも分けて調べてもらいました。
たしかに、時間帯によって成績はまるで違います。
でも、違っていたのは負けの大きさだけで、プラスになる時間帯はありませんでした。
AIのまとめは、こうです。
「時間帯で成績が違う」は本当。ただし違うのはコストで、優位性ではない。
ネットでよく見る「この時間帯は勝ちやすい」という話も、実はスプレッドの違いを見ているだけ、ということがあります。
朝のスプレッド拡大が作る「幻のパターン」
もうひとつ、だまされかけた話です。
検証の中で、「日本時間の朝に、ドル円が上がりやすい」という、かなり強そうな結果が出ました。
ところが調べると、ほかの通貨ペアでも、同じ時間に売値がそろって上がっていました。
原因は、早朝のスプレッドの広がりでした。
売値と買値の両方のデータをそろえて比べてもらうと、日本時間の朝6〜7時ごろだけ、スプレッドが4〜5倍に開いていたんです(過去データ)。
売値だけのデータで見ると、スプレッドが広がって戻る動きが、まるで「値動きのくせ」のように見えてしまいます。
ポイント:売値(Bid)だけのデータで「この時間はこう動く」という結果が出たら、まずスプレッドの変化を疑う。
逆に、損切りが広いEAならコストは怖くない?
いま私が動かしているEAは、1時間足で、損切り幅もそれなりにあります。
このEAで、スプレッドを全部払わせた場合と払わない場合を比べると、6年分で成績が約5%下がる程度でした(バックテスト・過去データ)。
同じ検証で、新しく試した通貨ペアがマイナスになっていたのですが、これもスプレッドのせいではありませんでした。
コストを外しても、そもそもその通貨では形そのものに優位性がなかったんです。
つまり、
- 損切りが小さいEA → コストで負ける
- 損切りが広いEA → コストの影響は小さい。負けているなら、原因は別のところ
と、コストのせいなのか、中身のせいなのかを切り分けることができます。
MT4のバックテストでコストを確かめる手順
MT4のストラテジーテスターは、基本的に決まったスプレッドで計算します。実際の相場のように、時間帯で広がったり縮んだりはしません。
そこで、次の手順で確かめるのがおすすめです。
- スプレッドの設定を確認する
テスターの「スプレッド」の欄で、「現在値」ではなく決まった値を入れておくと、テストのたびに結果が変わるのを防げます。5桁表示の業者では、10ポイント=1pipなので、単位に注意してください。 - スプレッドを広げてもう一度回す
普段の2倍、3倍のスプレッドでも回して、成績がどれくらい落ちるかを見ます。少し広げただけで崩れるEAは、実際の相場ではかなり厳しいと考えたほうが安全です。 - 自分の証券会社の数字で試す
スプレッドは会社によって違います。動かす予定の会社の公式サイトで、通貨ペアごとの目安を確かめましょう。私も、損切りの位置を考えるときに「証券会社によって数pips違う場合があるから」と、何通りも試してもらったことがあります。 - できればEAそのものでも確かめる
検証用のプログラム(シミュレーター)で速く回している場合は、最後にMT4のEAにして、同じデータで入った値段を比べます。私の場合、実際にスプレッドを払うEAと、計算上の値段で入るシミュレーターの差は、2pips以内に収まっていました(バックテスト・過去データ)。 - デモ口座で、実際の約定を記録する
スリッページは、バックテストではほとんど再現できません。デモ口座でしばらく動かして、注文した値段と約定した値段の差を見ておくと安心です。
チェックリスト
- [ ] スプレッドが損切り幅の何%か、ざっくり計算した
- [ ] テスターのスプレッドを決まった値で入れている(ポイントとpipsの単位を確認した)
- [ ] スプレッドを2〜3倍に広げても、成績が大きく崩れない
- [ ] 時間帯で成績が違うとき、スプレッドの違いではないかを確かめた
- [ ] 売値だけのデータで出た「時間のくせ」を、そのまま信じていない
- [ ] 動かす予定の証券会社のスプレッドを、公式サイトで確認した
- [ ] 週明けの窓開けや指標発表で、損切りがずれる可能性を考えた
- [ ] デモ口座で、実際の約定のズレを記録している
よくある質問
Q. スプレッドの狭い会社を選べば解決しますか?
A. コストは小さくなりますが、解決とまではいきません。早朝や指標発表のときには、どの会社でもスプレッドは広がりやすくなります。また、広告で見る数字は「原則固定」などの条件付きのことが多いので、実際の数字はデモ口座で確かめるのがおすすめです。
Q. スプレッドが広いときはエントリーしない仕組みは入れたほうがいい?
A. 入れておくと安心です。MT4のEAでは、注文の前に今のスプレッドを確かめて、広すぎるときは見送る、という仕組みが作れます。AIに頼めばすぐ書いてくれます。ただ、どこで線を引くかで成績も変わるので、その線もバックテストで確かめてください。
Q. スキャルピングのEAは作らないほうがいい?
A. 作れないわけではありません。ただ、私の検証では、短い時間足のエントリーは、コストを上回るのがとても難しいと感じました。始めるなら、最初から実際のスプレッド込みで検証することを強くおすすめします。
まとめ
- スプレッドと約定のズレは、EAが回数をこなすほど積み上がる見えないコスト
- コストの重さは、損切り幅に対する割合で考える。短期売買ほど重い
- 「時間帯で成績が違う」は、コストの違いを見ているだけのことがある
- 朝のスプレッド拡大は、売値だけのデータに幻のパターンを作る
- テスターではスプレッドを広げて回し、最後はデモ口座で実際の約定を確かめる
バックテストのデータそのものの精度については第4話「バックテストは、簡単に私を騙してくる」に、ほかの確認項目はバックテストで騙されないためのチェックリストにまとめています。
MT4とMT5の違いが気になる方はMT4とMT5、EAを作るならどっち?もどうぞ。
関連: バックテストと検証 / はじめてのEA開発
あわせて読みたい: EAの成績の見方
※本ブログの内容は私個人の経験にもとづくもので、将来の利益を保証するものではありません。バックテストの結果は過去のデータによるものです。投資は自己責任でお願いします。
コメント