【検証#18】週明けの窓で即ショート ― 「口が大きく開いた最高のシグナル」が、実は窓の残像だった話¶

この記事の3行まとめ
- 月曜オープンの5分後、EAが週末の窓(ギャップ)を追いかけてドル円をショートしました。調べたところロジック通りで、しかも窓はこのロジックにとって最強の発火条件になっていました。
- 原因は移動平均の「シフト」。窓が入ると3本の線が別々のタイミングで窓を吸収するため、窓の4〜8本後に「口が大きく開いた新規ブレイク」が人工的に生まれます。7年半・10,600シグナルで測ると、週明け0-15分のシグナルだけ勝ちパターン到達率が74.5%→59.7%に落ちていました。
- おまけに週明け直後のスプレッドは中央値8.2pips(平常の5.1倍)。利確目標30pipsに対して、入口だけで4分の1以上を払っていました。
この記事の前提
前回(【検証#16】)で「次回はv8を実際に動かした結果を報告します」と書きました。これがその報告です。数値は特定の業者・特定の通貨ペア(ドル円)の実測値であり、環境が変われば変わります。投資助言ではありません。
はじめに ― 「動かした結果を報告します」の、その報告です¶
みなさん、こんにちは!FXおもしろラボ管理人です。
前回、自作マーチンEAのスワップ地獄を改修した話(v8)を書きました。バックテストでは赤字が黒字に転換し、記事の最後を「次回は、このv8を実際に動かした結果を報告します」と締めくくりました。
今回はその報告です。そして今回もまた、当初の見立てが実測にひっくり返されました。
月曜の朝、チャートを見たらこうなっていました。

週末をはさんで金曜の終値から約29pips下に窓を開けて始まり、その5分後にEAがショートで入っていたのです(画像右寄り、SELL 0.03 at 163.528の赤い印)。左半分が金曜、右側が月曜で、その間の空白が週末です。
正直、最初に思ったのは「これはマズいのでは」でした。取引が薄い時間帯に、しかも窓が開いた直後という、一番読めない瞬間に飛び込んでいる。そこで「これはロジック通りなのか?それともバグなのか?」を調べることにしました。
第1幕 ― ロジック通りでした。それも、かなり悪い意味で¶
このEAのエントリー条件は、アリゲーター(3本の平滑移動平均)を使ったシンプルなものです。
- 3本の線の「口」が3pips以上開いている
- 3本が上(または下)にきれいに並んでいる
- 1本前のバーでは並んでいなかった(=並び始めたばかり)
要するに「今まさに口を開けて走り出したところ」を狙う、教科書どおりのブレイクアウト判定です。
ここで、窓が開いたときに何が起きるかを考えてみます。3本の線はそれぞれ期間が違います(13・8・5)。金曜の終値から29pips飛んだ価格が入ってくると、期間の短い線(5)はすぐ新しい価格に追いつきますが、期間の長い線(13)はまだ金曜の水準に留まっています。
結果、窓が入った瞬間に「口が大きく開いて、きれいに下向きに並んだ」状態が自動的に完成します。しかも窓によって並び順が切り替わるので、「1本前は並んでいなかった」という3番目の条件まで同時に満たされます。
つまり――
窓は、このロジックにとって「最高のシグナル」に見える。実体はただのデータの段差です。
このときの「口の開き」を再現計算で確かめると11.4pipsでした。判定に必要な3pipsの約4倍、通常時の平均(4.8pips)の2倍以上です。EAから見れば「かなり強いブレイクが始まった」ように見えていたことになります。
第2幕 ― 私の説明は間違っていました(実測が覆した)¶
ここまでは、いわば理屈です。私は当初、この現象をもう少し詳しく説明しようとして、技術的に間違ったことを書きました。訂正を含めて残しておきます。
アリゲーターの3本線には、それぞれ「シフト(ずらし)」の設定があります(8・5・3)。チャート上で線が右にずれて描かれているアレです。私は最初、「あのずらしは表示上のもので、プログラムが読み取る数値には反映されない」と説明しました。よくある理解ですし、私もそう覚えていました。
これを確かめるため、EAの判定ロジックを外部の言語でそっくり再現し、「ずらしを反映する版」と「しない版」の両方を作って、実際に口座で発注された24回のエントリーと照合しました。結果はこうです。
| 再現版 | 実際のエントリー24回との一致 |
|---|---|
| ずらしを反映する版 | 24 / 24(すべて同じ1分足で一致) |
| ずらしを反映しない版 | 0 / 24 |
私が間違っていました。 ずらしは読み取る数値にも効いています。つまりEAは、判定のたびに「9本前・6本前・4本前」という、それぞれ違う時点の平均値を並べて「口の開き」を見ていたことになります。
そしてこの訂正は、話をむしろ悪い方向に確定させました。3本が別々の時点を見ているということは、窓が入ったとき、3本が別々のタイミングで窓を吸収するということです。短い線が窓を飲み込んだのに長い線がまだ飲み込んでいない、その「ズレている数分間」だけ、口が異常に大きく開いて見えます。
裏付けもデータに出ていました。窓のあと何本目でシグナルが出たかを数えると、こうなります。
| 窓からの経過 | シグナル本数 |
|---|---|
| 0〜3本後 | 10本 |
| 4〜8本後 | 180本 |
| 9〜13本後 | 8本 |
| 14〜21本後 | 17本 |
発火は窓の直後ではなく、4〜8本後に集中しています。これは「短い線は窓を吸収したが長い線はまだ」という時間差そのものです。理屈から予想される位置に、実測がぴたりと乗りました。
第3幕 ― 7年半・10,600シグナルで測る¶
「気持ち悪い」だけでは対策を決められないので、ドル円の1分足7年半分(2019年〜2026年7月)に同じ判定を当てて、シグナル10,600本の成績を比べました。
比較の物差しは、マーチンゲールEAにとって一番痛いところ――逆行の深さです。このEAはナンピン幅が20pips、その次が40pipsなので、「60pips逆行した」=3段目まで積み増したとほぼ同義になります。
| シグナルの種類 | 本数 | 先に+20pips到達 | 60pips逆行(3段目相当) | 60分後の平均 |
|---|---|---|---|---|
| 通常時(基準) | 10,176 | 74.5% | 25.2% | +0.6pips |
| 週明け0-15分 | 134 | 59.7% | 38.1% | -6.8pips |
| 窓の4〜8本後 | 180 | 66.1% | 31.1% | -4.3pips |
| 週明け16-30分 | 20 | 85.0% | 15.0% | -3.4pips |
| 週明け31-60分 | 47 | 72.3% | 25.5% | +1.8pips |
読み取れることは3つあります。
- 週明け0-15分だけが明確に悪い。 勝ちパターン到達率が74.5%→59.7%に落ち、逆に3段目まで積み増す確率は25.2%→38.1%(1.5倍)に上がります。統計的にも偶然では説明できない差でした。
- 16分を過ぎると差が消えます。 つまり「週明けは危ない」を1時間、2時間と広げるのは無意味で、まともなシグナルを削るだけです。
- 口の開きは、悪いシグナルほど大きい。 通常時の平均4.8pipsに対し、週明け0-15分は9.1pips。「大きく口が開いた最高のシグナル」に見えるものほど、実は窓の残像でした。
そして、スプレッドがとどめでした¶
もう一つ、測るまで軽視していたものがあります。取引コストです。
| 時間帯 | スプレッド中央値 |
|---|---|
| 週明け0-5分 | 8.2pips |
| 週明け0-15分 | 7.0pips |
| 週明け31-60分 | 4.6pips |
| 平常時 | 1.6pips |
平常時の5.1倍。 このEAの1段目の利確目標は30pipsですから、入口を通るだけで目標の4分の1以上を支払う計算になります。エントリーの巧拙以前の問題でした。
実口座でも、同じ偏りが出ていました¶
最後に、実際の口座で「1段目のエントリー」が24回ありました。そのうち2回が週明け60分以内です。
「たった2回か」と思われるかもしれませんが、週明け60分という時間帯は、取引時間全体のわずか0.8%しかありません。本来なら24回中0.2回しか起きないはずの場所に、2回集まっています。約10倍の集中で、これも偶然では説明しにくい偏りでした(二項検定でP=0.016)。
第4幕 ― 測った数字のとおりにガードを作る¶
ここまで来て、ようやく対策です。測る前に決めていた数字は、ほぼ全部間違っていました。
最初、私は「窓のあと21本は入らない」「週明けは60分ブロック」くらいが妥当だろうと考えていました。ですが実測を見ると、14本以降も31分以降も、成績は通常時と変わりません。その範囲まで止めるのは、単に正常なシグナルを捨てているだけです。
そこで、劣化が実際に出ている範囲に合わせて、3つのガードを入れました(v9)。
| ガード | 設定値 | そう決めた理由 |
|---|---|---|
| スプレッド上限 | 3.0pips | 平常時はほぼ全部通り、週明けの拡大(中央値8.2pips)は確実に弾ける |
| 週明けブロック | 15分 | 悪化は0-15分に限局。16分以降は差がない |
| 窓ブロック | 10pips以上の窓のあと12本 | 悪化の本体は4〜8本後。14本以降は差がない |
この3つで止まるのは、全時間の0.30%だけです。捨てているのは平均以下のシグナルばかりなので、機会損失はほとんどありません。
設計で一番気を遣ったところ¶
ここは実装上の教訓として書いておきます。これらのガードは「新規エントリーとナンピン追加」にだけ掛けて、決済側には絶対に掛けていません。
考えてみれば当然で、「スプレッドが広いから発注しない」を決済にも適用してしまうと、一番相場が荒れて、一番閉じたい瞬間に、EAが決済できなくなります。損切りも利確も強制決済も、常に素通しでなければいけません。これは「うっかり共通化してしまいそうな場所」なので、あとから誰かが機能を足したときに壊さないよう、決済系6経路それぞれにガードが入っていないことを自動テストで固定しました。
なお冒頭のエントリーは、この3つのガードすべてに引っかかります(週明け+5分/28.9pipsの窓の5本後/スプレッド約8pips)。
正直に書いておくべきこと¶
冒頭のあのショート自体は、結果だけ見れば悪くありませんでした。実測すると、60pips逆行する前に+20pips方向へ届いています(最大逆行は16.8pips)。「入った瞬間に大負けした事件」ではありません。
私が問題にしているのは1回の勝ち負けではなく、その種類のシグナルを繰り返し取ったときの分布です。10,600本で測ると、この種類は明確に分が悪い。1回の結果で判断すると、ちょうどこういう「たまたま勝った危ない入り方」を強化してしまいます。
もう一つ。実口座で週明けに入った2回のうち、もう1回(週明け37分)は今回のガードでは止まりません。こちらは60pips以上逆行した側でした。窓から時間が経っており、口の開きも通常サイズ(4.1pips)だったので、「窓の残像」では説明できない別のケースです。スプレッド上限には引っかかる可能性が高い時間帯ですが、確実ではありません。今回の3つのガードで週明けの問題が全部片付いたわけではない、というのが正確なところです。
教訓 ― 「良く見えるシグナル」ほど疑う¶
今回一番強く感じたのは、これです。
指標が「最高の形」を示しているとき、それが相場の形なのか、計算の副作用なのかを疑う必要がある。 口が10倍に開いたブレイクは、EAにとって最高のシグナルでした。実体は、金曜と月曜の価格を混ぜて計算しただけの段差でした。
- 移動平均に「ずらし」を使っているロジックは、窓のあと期間+ずらしの本数だけ、過去と現在が混ざった値を見ている
- 「危なそうだから広めに止めておく」は、測ると過剰だった。15分で足り、12本で足りた
- 取引コストは、エントリーの良し悪しより先に効く。週明け直後は平常の5倍
- そして、自分の技術的な思い込みは実測で潰せる。今回は「ずらしは表示だけ」という私の説明が、24対0で否定されました
前回の記事で私は「勝率ではなく負け方を設計する」と書きました。今回はその手前、「そもそも入口に立つべきでない瞬間がある」という話でした。マーチンゲールは入口の質にレバレッジが掛かる手法です。だからこそ、入らない条件を決めておく価値があります。
それでも、検証は続きます¶
v9はまだ入れたばかりです。次の週明けにガードが実際に発動するかを見て、また報告します。
「実際に動かしたら、想定していなかった穴が見つかった」――前回も今回もこのパターンでした。おそらく次もそうなると思います。
※本記事は実運用の記録と実測データに基づく体験談であり、投資助言ではありません。数値は特定の業者・通貨ペア(ドル円)での実測値であり、環境が変われば結果も変わります。過去データでの検証結果は将来の運用成績を保証するものではありません。