GBPJPYのロールオーバー直後を狙う戦略は、成行版(RESEARCH-082)ではPython PF 3.43がMT5 Strategy Testerで 0.63 まで崩壊しました。原因はロジックではなく約定価格の前提——理論が使っていたサーバー00:00の始値では約定できず、実際の最速である00:01時点では平均 14.7 pip 不利になっていたためです。そこで成行をやめ、ロールオーバー前に BUY LIMIT を置いて「下がってきたら拾う」設計に変えたところ、MT5 Strategy Tester で PF 2.42(179取引・全7年黒字)になりました。プロトタイプEAのソースを無償公開します。
元の設計(RESEARCH-082)は単純でした。サーバー時刻00:00のH1バー始値で買い、数時間後に決済する。Pythonバックテストでは PF 3.43、ウォークフォワード11区間すべてプラス。統計的にはきわめて頑健に見えました。
ところが同じロジックをMT5 Strategy Testerに載せると、PFは 0.63。PythonとMT5のエントリー価格を365回分つき合わせて、原因が判明しました。
サーバー00:00はロールオーバーであり、流動性が大きく低下する時間帯です。その始値では実際に約定できません。成行を出せる最速は00:01。そして 00:00→00:01 の1分間で、価格は平均 +14.7 pip 動いていました(95%が不利側)。
つまり、理論が捉えていた利益の大半は、現実には手が届かない最初の60秒に発生していたことになります。チャートに始値が記録されていることと、その価格で注文が成立することは別の問題です。
この問題は、セッション開始直後・週明け・経済指標発表時・ロールオーバー直後を狙う戦略で共通して起こります。
そこで「上昇を成行で追いかける」設計そのものを捨てました。代わりに、ロールオーバー前に、現在価格より下へ BUY LIMIT を置く。荒い値動きの中で一度下がってきたときだけ約定させる設計です。
| 成行版(R082) | 指値版(R107) | |
|---|---|---|
| エントリー | サーバー00:00の始値で成行 | 前夜23時台の最終Bid −10pip に BUY LIMIT |
| 約定の可否 | その価格では約定できない | 自分が提示した価格でのみ約定 |
| 失効 | — | 01:00に未約定なら取消 |
| 決済 | 数時間後 | 02:00に成行クローズ |
| MT5 PF | 0.63 | 2.42 |
シグナル側は変えていません。前日D1の終値がレンジ下位60%未満(=上昇余地がある日)で、かつ木曜以外——これだけです。移動平均もRSIも使いません。
この変更の本質は「勝率を上げた」ことではなく、バックテスト上の架空の約定を排除したことです。指値なら、約定したかどうかがテスター上でも現実と同じ条件で決まります。
| 項目 | 値 | 備考 |
|---|---|---|
| プロフィットファクター | 2.42 | Gate B 合格基準 1.51 を上回る |
| 総取引数 | 179 | 年約28回・全LONG |
| 勝率 | 66.5% | — |
| 最大ドローダウン | 10.6% | — |
| 年次 | 全7年黒字 | 2020〜2026年上期 |
| 2025年単年 | PF 1.03 | ほぼ損益分岐。好調年と軟調年の差が大きい |
| 指値の約定挙動 | 健全 | fill中央値1分・逆選択なし |
重要なのは PF 2.42 という数字そのものではありません。2025年単年は PF 1.03 で、実質的にほぼ損益分岐でした。「7年間ずっと安定していた」戦略ではなく、好調な年が全体を持ち上げている構造です。
それでも公開する理由は、特定の年だけに最適化された結果ではなく、異なる相場環境を含む7年間で年間損益がマイナスにならなかった点に、一定の再現性が認められるからです。ただしフォワードテストは実施していません。
ここは、後続研究が教えてくれた重要な点です。
R107 は検証期間(Val)でも成績が落ちるどころか avg +11.85 pip / PF 3.55 と Val が IS を上回りました。では、この頑健性は「指値という優れた約定構造」から来ていたのでしょうか。
答えはノーでした。同じ指値構造を別のシグナルへ移植した RESEARCH-111 は、約定機構が完璧に動いたにもかかわらず Val PF 1.03 へ劣化して棄却されています。姉妹研究の RESEARCH-108 も、非JPYへの移植で同じ結論に達しました。
良い約定は移植できる。エッジは移植できない。
R107 の頑健性は、指値ではなくシグナル源(前日D1 close_pos < 0.60 = 上昇余地のある日のキャリー実需)から来ていました。約定構造は「エッジを殺さないための器」であって、エッジそのものではありません。
✓ 本EAは絶対時刻(TimeGMT)基準ではありません。判定に使うのはブローカーのサーバー時刻(TimeCurrent)で、「サーバー0時=ロールオーバー」というアンカーに紐づきます。ロールオーバー自体がサーバー時刻で定義される以上、この設計は機序と時刻基準が一致しています(TZ-2026-001 の論点には該当しません)。
⚠ ただしサーバー時刻の異なるブローカーでは基準がずれます。検証は IC Markets 系(GMT+2/+3・ロールオーバー=サーバー0時)で実施しました。他社では必ず再検証してください。
⚠ バックテストは「Every tick based on real ticks」が必須です。OHLC on M1 等では指値の約定判定が再現できず、結果が変わります。
⚠ 研究・検証用のプロトタイプです。資金管理は最小限で、実運用を前提とした実装ではありません。
ファイル: R107_TokyoLimit_v1.01.mq5/公開日: 2026-08-25/対応: MetaTrader 5(MQL5)/文字コード: UTF-8(BOM付)
SHA-256: 2e8289371d1af5371c6c5e15db74c349b3270869aee996ede59b79bd5ac40e4c
パラメータ: InpDeltaPips=10.0(指値の深さ)/InpMaxClosePos=0.60(前日D1 close位置の閾値)/InpSkipThursday=true/InpLots=0.10。GBPJPY の M1 チャートにセットしてください(シグナル判定は内部でD1を参照します)。
検証・学習目的での閲覧・改変・実行を許諾します。再配布時はファイル先頭のヘッダを削除しないでください。本公開は投資助言ではありません。過去の検証結果は将来の利益を保証しません。FXはレバレッジにより損失が預入額を超える可能性があります。実口座での使用により生じたいかなる損失についても当方は責任を負いません。
検証条件: 対象=GBPJPY/前日D1 close_pos<0.60 かつ木曜以外 → 前夜最終Bid−10pip に BUY LIMIT(01:00失効)→ 02:00 成行クローズ/MT5 Strategy Tester(IC Markets・2020.01–2026.06・Every tick based on real ticks・179取引)。 掲載数値はバックテストの実測値であり、フォワードテストは実施していません。
免責: 本ページは検証プロセスの開示を目的とした研究ノートです。投資助言ではありません。バックテスト結果は過去データに基づくものであり、将来の利益を保証しません。FX取引には元本割れのリスクがあります。図表はすべて実データ(検証レポート)からの再描画であり、生成AIによる作画は含みません。