千月堂FX自動売買ボットの P2 戦略について、長らく気になっていた挙動があった。

エントリーして含み益が乗り、TP(利確目標)まであと数 pips というところで反落、その後 SL まで戻されて損失で終わる

毎週何回も繰り返されるこのパターン。「どうにかならないか」と複数の改良案を検討し、過去1年・全6通貨ペアで6種類の BTを回した。結果、効果があったのは1つだけだった。

結論サマリー

  • 「届かず反落を救う」発想の早期保護系3案(C, E, F)は全て -3,000pips 以上劣化
  • 唯一機能したのは D(BE+8pips・TP到達後の後半ポジションのみ保護)
  • D は +604 pips / PF 2.18→2.28 の改善(過去1年)
  • 来週より live 反映予定(土曜マーケットクローズ中)

検証6パターン

ID名称内容
Aベースライン既存ロジック(保護なし)
B既存 be10TP1ヒット時、後半SLを建値+10pipsへ移動(既存実装)
CBody_TOP トレール + BE+8価格がTP参照足の実体上端を上抜けたら 1:1 トレール
DBE+8 のみTP1ヒット時、後半SLを建値+8pipsへ移動のみ
ETP=Body_TOPTPの位置を「H1スイング高値」→「スイング足の実体上端」に変更
FBE+8 + 1RトリガーD に加えて R:R=1:1 到達で両ポジSL→建値+8pips

C, E, F は「届かず反落」を救う発想(早期保護・早期利確・先回りロック)。
D, B は xxx001(TP用ポジション)が TP で利確された後の xxx002(SMA exit用ポジション)だけを保護する発想。

検証条件

  • 期間: 2025-04-11 ~ 2026-04-24(1年)
  • 通貨: EURUSD, GBPUSD, AUDUSD, NZDUSD, XAUUSD, GBPJPY
  • 戦略: P2 のみ
  • 単位: 1000 units 固定、min R:R = 1.0

結果

IDtrades総獲得 pipsPFWR採否
A. ベースライン697+17,7242.1847.9%
B. 既存 be10720+18,3662.28比較対象
C. Body_TOP+BE8809+13,0692.0459.7%却下
D. BE+8 のみ724+18,3282.2853.6%採用
E. TP=Body_TOP764+12,7521.8051.7%却下
F. BE+8+1Rトリガー745+15,1712.1857.4%却下

「届かず反落を救う」発想の C, E, F は全て -3,000 pips 以上劣化。
唯一機能したのは D(BE+8、TP到達後の後半保護のみ)で、ベースラインから +604 pips、PF 2.18→2.28

なぜ早期保護系が効かなかったのか

C, E, F に共通する問題は「守れた損失より、削れた勝ちの方が大きい」だった。

パターン守れた損失削れた勝ち純損益
Csl_hit 削減 +5,837tp1 -8,662, trailing -3,825-4,655
Esl_hit 削減 +1,191tp1 -2,838, trailing -3,412-4,972
Fsl_hit 削減 +2,299tp1 -3,512, trailing -1,665-3,157

特に XAUUSD(一方向に伸びる相場)で全パターンが大きく劣化した。TPまで素直に伸びる強いトレンドを早めの利確ラインで頭打ちにしてしまうと、1トレードあたりの平均利益が縮んで総和でマイナスに転ぶ。

D(BE+8)が機能した理由

D は xxx001(TP用ポジション)が 既に TP で利確完了した後の xxx002(SMA exit用ポジション)だけを保護する。

  • 勝ちトレード本体(xxx001)には触れない
  • 後半の xxx002 だけが「最低でも建値+8pips(手数料カバーの純利益0円ライン)」で逃げ切れる
  • 大相場ではそれ以上に伸びるので、トレールの妨げにもならない

つまり「勝ちトレードの上限はキャップせず、負けに転じる可能性のある後半だけを最低限ロック」という設計が、唯一機能する形だった。

学び

3つの早期保護案が同じ方向で失敗した事実は重要だった。

  • 早期 SL 移動・早期利確は 大相場の取りこぼしに直結
  • 「届かず反落を救う」アプローチは、本質的に勝ちトレードを縮める方向にしか働かない
  • 既存の TP 設定(H1 swing 高値の2番目)は、思っていた以上にバランスの取れた設計だった

次の改善方向

負けトレードを減らす」方向のほうが伸び代が大きいことも見えた。D の exit_reason 内訳:

reason本数pips1本平均
sl_hit336-14,361-43
tp1_partial194+16,282+84
trailing_sl165+12,271+74
dow_break29+4,137+143

sl_hit で -14,361 pips の流出。ここに入口フィルタ(R:R閾値、時間帯、レジサポ近接性等)を入れて、弱いシグナルを除外できれば、効率的に総獲得 pips が増えるはず。

実装スケジュール

D(BE+8)は 来週より live 反映予定。ライブトレード稼働中の変更は避けたいので、土曜日のマーケットクローズ中に作業する。

実装後の動作:

P2 のエントリー成立 → xxx001/xxx002 の2ポジ建玉
xxx001 が TP ヒットで利確
  ↓
xxx002 の SL を建値+8pips(純利益0円ライン)に自動修正
  ↓
xxx002 はその後 SMA exit / トレーリング SL / 建値+8pips のいずれかで決済

xxx001 が SL hit(損切り)で消えた場合は発動しない(利益が出ていないため)。


「ぱっと見救えそうに見えるパターンも、BT で検証すると逆効果なことが多い」

これが今回の一番の収穫だった。直感だけで実装に走らず、定量検証してから採用する習慣の重要性を改めて確認できた。

本記事の内容は千月堂が個人で研究・開発している FX 自動売買プロジェクトの記録です。投資助言や勧誘を目的としたものではありません。バックテスト結果は過去のヒストリカルデータに基づく理論値であり、将来の利益を保証するものではありません。