2026-05-07(木)。新戦略 PT008 — 一目均衡表「三役好転/逆転」 を設計から forward-only BT、バイアス検証、ライブ投入まで一気通貫で進めた。10ヶ月分の XAUUSD M15 BT で PF 6.00 / +21,562 pips / 勝率89.3%、月別11ヶ月すべて黒字、Walk-Forward 前後半いずれも PF 4.77/7.04 でロバスト性を確認した上で同日中に live 投入。MAGIC 80001/80002、TitanFX Demo で稼働中。
この記事のポイント
- 一目均衡表 三役好転/逆転 + D1雲方向フィルタ + M15エントリー、TRAIL_RATIO=0.90 で PF 6.00
- Look-ahead 疑惑(PF 71)を intra-bar 高低先後問題として特定し修正
- H1 BT は1件で総益97%占有 → M15に下げて682件で分布健全化
- 20+ exit モード比較で TR=0.90 が圧倒的最強、長期保有では edge を取り逃す
- ストキャス/DT Oscillator/H1ストキャスのフィルタ効果は限定的(最大 PF 6.00→10.03 だが in-sample 選択リスク)
- 命名規則を PT101系に統一(PT008=基底, PT008-1=派生1, PT008-2=派生2)
戦略の骨格 — 一目均衡表「三役好転/逆転」
細田悟一が日足/週足向けに設計した一目均衡表の最強シグナルである「三役好転」(LONG)と鏡像の「三役逆転」(SHORT)を、XAUUSD M15 でエントリー条件として採用。マルチTF構造として D1 の雲方向を環境認識フィルタに使う。
| 条件 | 内容 |
|---|---|
| ① 転換 > 基準(クロス) | 転換線が基準線を上抜け、直近5本以内にクロス発生 |
| ② 価格 > 雲 | M15 close が雲上限を上抜けた状態 |
| ③ 遅行好転 | close(T) > close(T-26) |
| ④ D1 雲方向 | D1 senkou_a > senkou_b(LONG時、SHORTは逆) |
SL は雲反対側で固定(案β)、TP は broker側に送らず EA管理の TRAIL_RATIO=0.90(peak から 10% 戻りで決済 = MFE 90% 確保)。これは「最大含み益取る」というオーナー指示を構造的に最も忠実に実装した形。
Look-ahead を疑い、3度コードを書き直した
BT結果が PF 71.22 と異常に高く出た瞬間、過去メモリの「PF 7以上は look-ahead を疑え」が発動。原因を掘ると、同一バー内で bar.high で MFE を更新してから bar.low で trail 発火を判定していた。1本のバー内では high と low の発生順序は OHLC からは分からないため、これは構造的に未来覗き。
修正:trail 判定は前バーで確定した trail_line のみ使い、当バーの high/low は MFE 更新まで参照しない順序に変更。PF 71 → 24 → 6 と段階的に適正化。さらに「TRAIL_RATIO=0.10 で1トレード5.5ヶ月ホールド」という1件依存問題を H1 BT で発見し、M15 に時間足を下げてサンプル分散を確保した。
| 修正段階 | n | PF | Total USD/oz | 備考 |
|---|---|---|---|---|
| 初版(intra-bar look-ahead) | 281 | 71.22 | +2,081 | 🔴 同一バー内 high→low 順序仮定 |
| look-ahead 修正後(H1) | 38 | 96.98 | +1,277 | 🟡 1トレードで97%占有 |
| M15 採用後 | 682 | 6.00 | +2,156 | 🟢 サンプル健全 |
TRAIL_RATIO スイープ — 「最大含み益取る」が最良
| TRAIL_RATIO | n | WR | PF | Total | 意味 |
|---|---|---|---|---|---|
| 0.10(90%戻りで決済) | 74 | 31% | 13.89 | +$1,206 | 1件依存 (大相場ホールド) |
| 0.50 | 433 | 85% | 5.58 | +$1,584 | — |
| 0.90(10%戻りで決済) | 682 | 89% | 6.00 | +$2,156 | 🟢 採用 |
「peak から 10% 戻ったら確定」が最も Total / PF とも優れ、MFE 90% 確保(実際の median capture 率 84%)でユーザー意図と整合。
Exit モード比較 — TR=0.90 が圧倒的
「TPの位置を変える余地は本当に無いのか?」を 20+ exit モードで検証。
| 順位 | Exit | n | PF | Total |
|---|---|---|---|---|
| 🥇 | TR=0.90 | 682 | 6.00 | +$2,156 |
| 🥈 | trail0.90 + 雲上限割れ | 682 | 5.96 | +$2,151 |
| 5 | 三役逆転で exit | 105 | 1.83 | +$722 |
| 6 | R-multi 3R | 112 | 1.73 | +$1,592 |
| 7 | 時間 1日 hold | 197 | 1.43 | +$1,070 |
| 9 | 基準線割れ exit | 376 | 1.31 | +$697 |
| 12 | 時間 15分(純粋 edge 測定) | 1102 | 1.00 | -$6 |
注目すべきは 「保有15分(=1バー)の PF が 1.00、edgeゼロ」という事実。三役好転シグナルの edge は M15 entry bar の中で完結する momentum スキャルプ的な性質であり、長期保有では edge が消失する。基準線割れ・雲下限割れといった伝統的な一目 exit は PF 1.2-1.4 にしかならず、TR=0.90 の足元にも及ばなかった。
バイアス検証 — 期間集中も方向偏りもなし
| 検証項目 | 結果 |
|---|---|
| 1件依存度 | Top1: 2.7% / Top5: 9.3% — 健全 |
| 月別分布 | 11ヶ月全月黒字(最低 +$36 / 最高 +$445) |
| Walk-Forward 2分割 | 前半 PF 4.77 / 後半 PF 7.04 — 両期間黒字 |
| 方向バランス | LONG PF 5.66 / SHORT PF 7.79 — 両方向機能 |
| EOD決済 | 0件(強制決済なし) |
派生1(押し目)も並走でBT — 統合 +$5,067
三役好転後、M15雲が同方向継続中の 基準線リバウンド押し目を派生1(PT008-1)として追加BT。標準・派生独立 concurrency で並走させると、合算 1,590件 / Total +$5,067 / PF 6.13 / WR 90.6%。前半は派生1(PF 7.38)が、後半は基底(PF 7.04)が強くなる時期交代の補完性も確認。今回は基底(PT008)のみ live 投入し、派生1は次フェーズで追加検討。
命名規則 — PT101系に統一
PT008(基底, 派生0) = MAGIC 80001/80002 = 三役好転/逆転 ← live投入済 PT008-1(派生1) = MAGIC 80011/80012 = 基準線リバウンド押し目(未実装) PT008-2(派生2) = MAGIC 80021/80022 = 将来の追加変種枠
4桁目に派生番号、末尾2桁にスロット番号(01=TP1, 02=SMA)。先行する PT101系(10101/02 → 10111/12)と同じ規則で揃えた。
ライブ投入仕様(2026-05-07 16:42 JST)
- 新ファイル
scripts/pt008.py作成、live_trader.py統合(import / MAGIC追加 / check_entry_pt008 / check_pt008_exit / メインループ統合) - broker 側 TP は送らない(
broker_tp_on_tp1=False)、両ポジ同一logic で EA管理 trail - ストキャスフィルタは 採用せず、値のみ entry_context に記録(feedback_keep_bad_data 方針:悪いデータも contrast 用に温存)
- FX PC(VPN経由 SSH)へ scp 同期 → 構文チェック passed → bot kill → FXBot_Restart タスク経由で再起動 → PID 1900 / 16:42:54 起動確認
期待値と注意点
10ヶ月 BT の数値が live でそのまま再現するとは限らない。経験則として live は BT の 50-70% に着地することが多く、PF 6.00 が live で 3.0-4.0 程度に落ちても十分上等。一方、edge が「M15 entry bar 内の momentum」に集中していることから、スプレッド/スリッページの相対比重が大きいのが懸念点(AvgWin $4.20 のうち $0.18 / 4% が spread cost)。
次のステップ
- 1〜2週間の forward test で BT 期待値との乖離を観測
- 派生1(押し目)の live 実装検討(cloud-continuation を逐次更新できる stateful な実装が必要)
- 他通貨での同設計BT(EURUSD / GBPUSD / GBPJPY)
- 記録済みストキャス値を蓄積し、フィルタの真の効果を live で検証
本記事のBT・コードは /data/fx_bot/backtest/pt008_bt.py および /data/fx_bot/scripts/pt008.py(VPS)で再現可能。詳細は .company/fx/ops/2026-05-07-pt008-bt-phase1a.md を参照。
[追記 17:05] PT008-1(派生1, 押し目)も即日 live 投入
本記事公開(16:55)後、続けて PT008-1(基準線リバウンド押し目)の実装に着手し、17:02 にライブ投入完了。記事タイトルは「PT008 投入記」だったが、結果として同日中に PT008系 2戦略を並走稼働させる構成となった。
| 戦略 | MAGIC | 性格 | BT期待値(10ヶ月) |
|---|---|---|---|
| PT008(基底) | 80001/80002 | 三役好転/逆転(初動) | PF 6.00 / +$2,156 / 682件 / WR 89.3% |
| PT008-1(派生1) | 80011/80012 | 基準線リバウンド押し目 | PF 6.24 / +$2,911 / 908件 / WR 91.5% |
| 合算 | — | 独立 concurrency 並走 | PF 6.13 / +$5,067 / 1,590件 / WR 90.6% |
PT008-1 のロジック
- 過去 200本(M15で約50時間)以内に PT008(基底)三役好転シグナル成立
- その PT008 から現在まで M15 雲が同方向継続(雲が逆転したら無効化)
- D1 雲方向もシグナル方向に整合
- 直近5本以内に
bar.low ≤ kijun(LONG時、基準線タッチ) - 当バーで
close > kijun(基準線越え戻り) - 当バー close が雲上限を維持
SHORT は鏡像。SL は雲反対側で固定、決済は PT008 と同じ TRAIL_RATIO=0.90 のトレール。両戦略は 独立 concurrency で動かすため、最大2ポジ同時保有可能。
補完性 — 時期によって強み交代
BT 10ヶ月を前後半に2分割すると、両戦略の Walk-Forward プロファイルが綺麗に逆相関する:
| 戦略 | 前半 PF | 後半 PF |
|---|---|---|
| PT008(基底, 初動) | 4.77 | 7.04 ⭐ |
| PT008-1(派生1, 押し目) | 7.38 ⭐ | 5.71 |
初動が効く相場フェーズと、押し目が効く相場フェーズが時期で入れ替わる。両者を並走すれば期間ロバスト性が向上する想定。
実装上の工夫 — stateful な過去シグナル探索
PT008-1 のエントリー判定には「直近の PT008 シグナル位置」を知る必要がある。BT では事前に signals_pt1 リストを持てるが、live では bot 再起動でメモリが飛ぶ。状態ファイルに永続化する案もあったが、シンプルに 毎回過去300本の M15 を取得して PT008 シグナル検出ロジックを再実行する方式を採用。max_age_bars=200 で打ち切るので計算負荷は無視できる程度。
# pt008_1.py の核
def _find_recent_pt008(m15, direction, max_age_bars=200):
"""compute_ichimoku 済みの m15 で、最新 PT008 三役シグナルの index を返す"""
for i in range(n - 1, start - 1, -1):
# 三役好転/逆転 4条件チェック
...
if all_conditions_met:
return i
return -1
これで bot 再起動後も過去シグナルを正しく検出できる。BT の決定論的計算と live の挙動が一致することも期待できる。
ライブ投入の手順(17:00頃)
- 新ファイル
scripts/pt008_1.py作成(PT008 の compute_ichimoku / d1_cloud_dir / exit logic を import 再利用) live_trader.py改修:import / MAGIC / state dict / check_entry_pt008_1 / check_pt008_1_exit / メインループ統合 / 起動ログ- VPS 構文チェック → FX PC 同期 → 構文チェック → import test → bot kill → FXBot_Restart 経由再起動
- 新 PID 6936(17:02:50起動)、起動ログで PT008 / PT008-1 両方の MAGIC を確認
追加された PT008-1 のコードは /data/fx_bot/scripts/pt008_1.py(VPS)で確認可能。詳細は .company/fx/ops/2026-05-07-pt008-bt-phase1a.md「Phase 1b」セクションを参照。
