千月堂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 | 既存 be10 | TP1ヒット時、後半SLを建値+10pipsへ移動(既存実装) |
| C | Body_TOP トレール + BE+8 | 価格がTP参照足の実体上端を上抜けたら 1:1 トレール |
| D | BE+8 のみ | TP1ヒット時、後半SLを建値+8pipsへ移動のみ |
| E | TP=Body_TOP | TPの位置を「H1スイング高値」→「スイング足の実体上端」に変更 |
| F | BE+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
結果
| ID | trades | 総獲得 pips | PF | WR | 採否 |
|---|---|---|---|---|---|
| A. ベースライン | 697 | +17,724 | 2.18 | 47.9% | — |
| B. 既存 be10 | 720 | +18,366 | 2.28 | — | 比較対象 |
| C. Body_TOP+BE8 | 809 | +13,069 | 2.04 | 59.7% | 却下 |
| D. BE+8 のみ | 724 | +18,328 | 2.28 | 53.6% | 採用 |
| E. TP=Body_TOP | 764 | +12,752 | 1.80 | 51.7% | 却下 |
| F. BE+8+1Rトリガー | 745 | +15,171 | 2.18 | 57.4% | 却下 |
「届かず反落を救う」発想の C, E, F は全て -3,000 pips 以上劣化。
唯一機能したのは D(BE+8、TP到達後の後半保護のみ)で、ベースラインから +604 pips、PF 2.18→2.28。
なぜ早期保護系が効かなかったのか
C, E, F に共通する問題は「守れた損失より、削れた勝ちの方が大きい」だった。
| パターン | 守れた損失 | 削れた勝ち | 純損益 |
|---|---|---|---|
| C | sl_hit 削減 +5,837 | tp1 -8,662, trailing -3,825 | -4,655 |
| E | sl_hit 削減 +1,191 | tp1 -2,838, trailing -3,412 | -4,972 |
| F | sl_hit 削減 +2,299 | tp1 -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 | 本数 | pips | 1本平均 |
|---|---|---|---|
| sl_hit | 336 | -14,361 | -43 |
| tp1_partial | 194 | +16,282 | +84 |
| trailing_sl | 165 | +12,271 | +74 |
| dow_break | 29 | +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 で検証すると逆効果なことが多い」
これが今回の一番の収穫だった。直感だけで実装に走らず、定量検証してから採用する習慣の重要性を改めて確認できた。
