\n\n\n

2026-05-12(月)。朝7時、口座を開いたら維持率 116%。先週末 ¥111K だった残高が ¥21K まで激減していた。証拠金 ¥1M の追加を申請しつつ、原因究明から始まった1日が、最終的に「全戦略の個別ファイル化リファクタ + PT007 出口の革命的変更」まで進んだ。本日の作業ログをまとめる。

\n\n
\n

この記事のポイント

\n
    \n
  • 朝の危機: 維持率 116%、 ¥1M 増資申請(昼に反映)
  • \n
  • 発見 1: close_position のコメント固定バグで 全戦略の決済理由が "SMA exit" に上書きされていた → 修正
  • \n
  • 発見 2: check_sma_exit が 全戦略の Pos2 を巻き込み決済する構造的バグ → PT001/PT002 限定化
  • \n
  • 大改修: live_trader.py 2,198行 → 562行へ。 戦略個別関数を 14 ファイルに分離
  • \n
  • PT007 詳細分析: WR 40%, PF 0.81。 大負け 4 件で -¥5K。 MFE 平均 +30pips のチャンスを -2.5pips で抜けている
  • \n
  • PT007 出口を BB階層TP (M1 BB, 2.0σ-5.0σ, 0.5σ刻み 7段階) へ変更
  • \n
  • OOS BT (2026-02〜04) で PF 2.81-4.02 / +¥321K 月平均、 過剰適合なし確認
  • \n
\n
\n\n

1. 朝の危機 — 維持率 116%

\n\n

朝7時、 FX PC に SSH してみると衝撃の数字:

\n\n\n\n\n\n\n\n\n
項目5/9 (土)5/12 (月) 朝
Balance¥111,359¥21,570-¥89,789
維持率759%116.1%-643pt
週次P/L--¥41,398月曜+¥6K / 火曜朝-¥47K
\n\n

主犯は監視2戦略 PT008/PT008-1(合算 -¥30K)と、 重点戦略のはずの PT005_EW(XAU SHORT で -¥13K)。 即座に ¥1,000,000 の証拠金増資を申請(昼12:36 反映)。

\n\n

2. 隠れていたバグ 2件

\n\n

バグ① close_position のコメント固定上書き

\n\n

PT101_BB が「SMA exit が全件、 BB階層 TP が一度も発火していない」と最初判断したが、 ログを掘り下げると BB階層 TP (TRAIL90, BB2_RETEST, BB3_TP) は実際に live で発火していたことが判明。 単に close_position()comment="SMA exit" がハードコードされていて、 deal.comment が全部「SMA exit」に上書きされていただけ。

\n\n

修正: close_position(position, reason="SMA exit") に変更し、 各 caller から本来の決済理由を渡す。 結果として deal.comment に PT101_BB:BB3_TP, PT006_v2:BB4_TP, PT101_v3:BE_after_BB1 などの正しい理由が記録されるように。

\n\n

バグ② check_sma_exit の対象 MAGIC が広すぎる

\n\n

本来 PT001/PT002 用の「M15 SMA20 タッチで Pos2 を決済」関数が ALL_MAGIC_SMA(全14戦略の Pos2 MAGIC を含む集合)を対象にしていた。 これにより:

\n\n
    \n
  • PT007 の Pos2 (70002) が「peak から $0.30 戻り」を待つ前に M15 SMA20 タッチで決済
  • \n
  • PT101_BB / PT006_v2 / PT101_v3 / PT102_v3 / PT008系 の Pos2 も同様に巻き込み
  • \n
\n\n

修正: 対象を PT001/PT002 のみに限定。 これで各戦略の自前 exit ロジック(trailing / evaluate_exit)が本来通りに動くようになった。

\n\n

3. 全戦略を個別ファイルにリファクタリング

\n\n

「各 PT はそれぞれのスクリプトで動いているのではないか?」というユーザー(自分)の指摘から判明したのは、 判定ロジックは pt007.py 等の個別ファイルだが、 発注ロジック (check_entry_pt007) と exit ロジック (check_pt007_trailing_exit) は live_trader.py の中にまとめて書かれていたこと。

\n\n\n\n\n\n\n\n\n\n\n\n
ファイルBeforeAfter
live_trader.py2,198 行562 行
pt001.py241 行515 行
pt006_v2.py266 行417 行
pt007.py185 行293 行
pt101_v3.py384 行528 行
...(全 14戦略)合計 +1,500 行が戦略ファイルに移管
\n\n

各 pt*.py から共通インフラ(close_position / execute_entry / get_rates 等)への参照は 関数内遅延 import で循環参照回避。 __main__ 実行時の sys.modules 登録ワークアラウンドも追加。

\n\n
\n途中で躓いたポイント: FX PC の C:Usersy2198fx_botpt007.py に古い (5/4 時点の) コピーが残っていて、 sys.path 優先順位で新しい scripts/pt007.py より先に読まれていた。 これに気付かず 30 分以上「なぜ pt007.check_entry_pt007 が AttributeError?」と混乱。 古いファイルを .OLD_BACKUP にリネームして解決。\n
\n\n

4. PT101 v1/v2/v3 累計成績比較

\n\n

各バージョンを投入日から現在 (5/12 朝 7:50) までで集計:

\n\n\n\n\n\n\n\n\n
戦略稼働取引WR累計P/L平均勝平均負PF
v1 (PT101)8.4日64951.5%-¥47,247+¥350-¥5210.71
v2 (PT101_BB)6.4日33239.5%-¥35,658+¥522-¥5170.66
v3 (PT101_v3)3.4日5347.2%+¥9,973+¥828-¥3831.93
\n\n

PF が 0.71 → 0.66 → 1.93 へ着実に改善。 「TRAIL75 で建値撤退多発 → TRAIL90 で利益刈り取り → BB4階層+BE+8 で改善」 という設計の進化が数字で裏付け。

\n\n

PT101_v3 を 7通貨ペアに展開

\n\n

1年BT (2025-04 〜 2026-04) で 6通貨を試した結果:

\n\n\n\n\n\n\n\n\n\n\n\n\n
SymboltradesPL累計WRPF
EURUSD13,078+¥81,80059.5%1.17
GBPUSD12,710+¥54,79659.4%1.09
AUDUSD13,063+¥58,77560.5%1.16
NZDUSD12,558+¥14,94658.6%1.04
XAUUSD9,112+¥1,873,10554.8%1.45
GBPJPY11,328-¥32,13857.1%0.95
合計71,849+¥2,051,285
\n\n

ドルストレート 5/5 全黒字、 クロス円 GBPJPY のみ赤字。 「ドルストレート優位」が成立。 これを受けて PT101_v3 を XAU + EUR/GBP/AUD/NZD/USDCHF/USDCAD の 7 通貨に展開(USDCHF/USDCAD は PT101_v3 専用ループで他戦略に影響なし)。

\n\n

5. PT102 v1/v3 累計成績 + 7通貨投入

\n\n\n\n\n\n\n\n
戦略取引WR累計P/LPF
v1 (PT102, TRAIL30)22943.2%+¥10,2151.21
v3 (PT102_v3, BB階層TP)2665.4%+¥5,7372.29
\n\n

PT102 v1 は PT101 v1 (PF 0.71) と比べて PF 1.21 と圧倒的に強い。 「ブレイク&復帰」フィルターと TRAIL30 (利益確保70%) が機能している。 ただし v1 のソースには「他5通貨は PF 0.24〜0.82 で実用不可」とBT結果が記載済み。 それでもデモ口座での検証として 7 通貨投入を決定。

\n\n

6. PT007 詳細分析 — グランビルではない、 底ダブルトップ・ブレイクアウト

\n\n

「PT007 がグランビルか?」という確認から始まった、 数時間にわたる徹底分析。 結論から言うと PT007 は 逆張り戦略(底打ち反発狙い)で、 ロジックは以下:

\n\n
    \n
  1. 底領域確認: 直近 60本(M1) に 0.5%以上の下落
  2. \n
  3. ダブルトップ検出: 直近20本 で 2つの近似ピーク + 谷
  4. \n
  5. ブレイクアウト: close > 2峰の最高値
  6. \n
  7. SL: ピーク間の最安値(dip)
  8. \n
  9. TP: トレーリング ($0.30 = 3pips 戻り)
  10. \n
\n\n

累計成績(5/4 〜 5/12, Pos1 31件)

\n\n\n\n\n\n\n\n\n\n\n
指標
取引数62 (Pos1+Pos2)
WR40.3%
累計 P/L-¥2,567
PF0.81 (赤字)
平均勝 / 平均負+¥435 / -¥363(RR 1.20)
\n\n

負け要因の共通項

\n\n

勝ち trade と負け trade の指標を比較したところ、 単一指標では差がなかった。 だが分類別に見ると明確なパターンが見えた:

\n\n\n\n\n\n\n\n\n\n\n
分類WRP/L
H1 SMA10 上向き(n=20)40.0%-¥1,683
H1 SMA10 下向き(n=11)45.5%+¥441
金曜 (n=4)0%-¥1,132
土曜 (n=4)25%-¥1,448
broker 19-23時 (n=7)0%-¥2,704
\n\n

PT007 が「底打ち反発戦略」と認識すると説明がつく — H1上向き = 既に上昇トレンド中の押し目の浅い揺れ動き = だましブレイク → 反落 SL ヒット、 という構造。 SL 直撃 3 件はすべて H1 上向き + 高 ATR (40+pip) + drop60 ぎりぎり (0.6%) というパターンで集中していた。

\n\n

7. MFE シミュレーション — 取り損ねの大きさ

\n\n

各 trade の保有期間中の最大含み益 (MFE) で完璧に利確していたらどうなるかを試算:

\n\n\n\n\n\n\n\n\n
項目実績MFE 完璧利確
累計 P/L-¥1,242+¥14,633
平均 pips/trade-2.5 pips+30.1 pips
取り損ね平均+32.6 pips/trade
\n\n
\n衝撃の発見: 負け trade の 77.8% (14/18件) が一度はプラス転換していた。 平均 MFE +22.0pips のチャンスをすべて取り損ねている。\n
\n\n

8. ピーク反落理由 — H1 24時間高値で 77%

\n\n

各 trade のピーク到達時に各指標との距離を計測:

\n\n\n\n\n\n\n\n\n\n\n
指標中央値ピーク超過率
M5 SMA20+135 pip90.3%(ほぼ常に超過)
M5 BB upper 2σ-33 pip32.3%
M5 BB upper 3σ-118 pip0%(一度も到達せず)
直近20本 M5高値-43 pip41.9%
直近24時間 H1高値-207 pip22.6%(77% が H1高値で反落)
\n\n

つまり「M1 のミクロな勢いで突破したが、 M5/H1 のマクロな抵抗線 (特に H1 24時間高値) に阻まれて反落」が PT007 の構造的問題。 ピーク到達後 平均 2.1 分 / 中央値 1.1 分で反落 → 既存の TRAIL_USD = $0.30 (3pips 戻り) では遅すぎる。

\n\n

9. 出口戦略 5案 + BT

\n\n

入口は変更せず、 出口だけ変更する 5 案を構想・BT。

\n\n\n\n\n\n\n\n\n\n
内容BT Sim P/LWRPF
実績TRAIL_USD $0.30-¥1,24240.3%0.81
案B 既存版BB階層 (BB2σ/3σ/4σ)+¥9,45971.0%3.17
案B 細分化BB階層 2.0σ-5.0σ, 0.5σ刻み 7段階+¥12,16677.4%3.90
案CH1 24h高値 TP + 2分タイマー-¥4,44135.5%0.52
\n\n

案B 細分化が最強。 0.5σ刻みで「ピーク手前の細かい戻り」も捕捉できる。 案C は仮説的に良さそうだったが、 2分タイマーが早すぎて「まだ伸びる trade」も殺してしまう結果に。

\n\n

BB階層TP 7段階の発火内訳 (BT)

\n\n\n\n\n\n\n\n\n\n\n\n\n\n
σレベル件数WR平均 P/L
BB5σ (即決済)0
BB4.5σ retest0
BB4.0σ retest4100%+¥972
BB3.5σ retest2100%+¥1,295
BB3.0σ retest3100%+¥920
BB2.5σ retest1090%+¥385
BB2.0σ retest875%+¥370
SL (broker)40%-¥970
\n\n

BB3.0σ 以上は全勝 (9件)。 BB2.5σ も 90% WR。 SL 直撃 4 件は構造的に残るが、 利益取り損ね問題が解消。

\n\n

10. OOS BT — 過去3ヶ月で過剰適合チェック

\n\n

in-sample (5/4-12) で +¥12K の好結果。 過剰適合チェックのため、 過去 3 ヶ月の M1 OHLC で PT007 シグナルを再現+BB階層TPを適用した out-of-sample BT を実行。

\n\n\n\n\n\n\n\n\n\n\n
期間signalsSim P/LWRPF
OOS-1 (2026-04)206+¥75,57182.5%3.21
OOS-2 (2026-03)288+¥121,77785.1%2.81
OOS-3 (2026-02)223+¥123,34781.2%4.02
IS (5/4-5/12)33+¥10,78284.8%3.74
OOS 3ヶ月合計717+¥320,69583.0%~3.3
\n\n
\n過剰適合の心配なし。 3 ヶ月の OOS データで WR 81-85%, PF 2.81-4.02 と一貫したパフォーマンス。 month平均 +¥75K-¥123K (0.01 lot)。 in-sample と out-of-sample の数字が揃っているのは、 ロバストに機能する戦略の証拠。\n
\n\n

11. デプロイ + 動作確認

\n\n

13:51 に PT007 BB階層TP 版を deploy。 14:14 時点で稼働継続中 (PID 4504)。 ただし PT007 のシグナル発火は厳しめ条件のため、 1日 4-5件程度の発火頻度。 次の発火で PT007:BB2.5_RETEST のような新コメント形式が記録される。

\n\n

本日のサマリー

\n\n
\n
    \n
  • 朝の危機: 維持率 116% → ¥1M 増資申請
  • \n
  • バグ修正 2件: close_position コメント上書き / check_sma_exit の対象 MAGIC 過広
  • \n
  • 大改修: live_trader.py 2,198 行 → 562 行、 戦略を 14 ファイルに分離
  • \n
  • PT101_v3 を 7通貨展開 (BT で 5/6 通貨黒字、 +¥2.05M/年)
  • \n
  • PT102 v1+v3 を 7通貨展開
  • \n
  • PT007 出口革命: BB階層TP 7段階で OOS 3ヶ月 PF 3.3、 月平均 +¥75-123K
  • \n
\n
\n\n

来週以降のロードマップ

\n\n\n\n\n\n\n\n\n\n
日付イベント
5/12 PMPT007 BB階層TP 初発火確認、 新コメント形式ログ蓄積開始
5/13-5/191週目モニタ、 全 14戦略の forward データ蓄積
5/26-6/92-4週目、 PT007 BT vs live 乖離チェック
6/91ヶ月 forward 検証完了 → PT007 採用 / 段階停止判断
\n\n

1日で多くを動かしすぎた感もあるが、 構造的バグ 2件 + リファクタリング + PT007 出口革命まで進めた。 来週末に live 結果が BT 通りに動くかを確認する。

\n\n
\n注意点: BT 結果はスプレッド・スリッページを考慮していない理論値。 live では BT の 70-80% 程度に縮小する可能性。 PT007 BB階層TP は完全に新ロジックなので、 1-2 週間の forward 検証が必須。\n
\n\n
\n