- SGD_101_v1 インジ強化: 条件①を
10EMA > 20SMA > 50SMA かつ 20SMA > H1 10EMAに拡張、DTosc SK バッファ追加 - SGD_BB_State 新規インジ作成: BBエクスパンション/中立/スクイーズを3色ドットで可視化
- SGD_101_EA v1〜v4 を1日で開発: 最終 v4 が Exness MT5 ST で PF 1.85 / +$303 / DD 0.78% 達成
- Python live_trader を broker パラメータ化: TitanFX と Exness の 2口座並走を開始(FX PC で 2プロセス)
背景: SGD_101_v1 はチャート補助インジで止まっていた
SGD_101_v1 は SMA10_Touch_Reversal を発展させたチャートインジで、青矢印(アンカー)と緑矢印(DTゴールデンクロス発火)を XAUUSD M5 LONG only で表示する。Forward-only BT で F_BB 単独 PF 1.39 / +1,884pips(直近1年)と「使える素材」ではあったが、実トレード EA への落とし込みはまだだった。今日はこれを一気に EA 化して、Exness MT5 でライブ運用ラインまで進めた一日。
1. インジ側の強化
SGD_101_v1: H1 10EMA / 50SMA を条件①に追加
従来の条件① 10EMA > 20SMA に、より長期側のフィルタとして以下を加えた:
20SMA > 50SMA(M5 のミドル&ロング SMA の整合)20SMA > H1 10EMA(上位足の方向と整合)
H1 EMA は iBarShift で対応する H1 バーインデックスを取得し、当 M5 バーが H1 足の最初の足(時刻一致)なら 1本古い H1 EMA を使う処理を入れた。確定済み足のみを参照する forward-only ルールを守るため。
あわせて、Buffer 2 として DTosc SK 値を公開(プロットせずデータのみ)。EA から iCustom で取得して F3 フィルタに使うため。
SGD_BB_State (新規): 3色ドットで状態を一目化
BB幅 (BBW = (upper-lower)/middle×100) を過去100本のレンジで正規化し、各足に固定高さのドットを打つサブウィンドウ系インジ。初版は「BBW値そのものをライン+点で表示」だったが、ユーザーから「上下動はいらない」指摘を受けて 3色ドット一本化に刷新。
| 色 | 意味 | BBW条件 |
|---|---|---|
| 黒点 | スクイーズ | 下位 20% 以下 |
| 灰点 | 中立 | 20-80% の遷移帯 |
| 緑点 | エクスパンション | 上位 20% 以上 |
2. SGD_101_EA v1 → v4 の進化
同じ「F_BB(BBエクスパンション帯)」をエントリ条件とした EA を 4世代で進化させた。各バージョンは Magic 番号で分離して並走可能。
| Ver | Magic | TP1 | TP2 | 初期SL | F3 | 備考 |
|---|---|---|---|---|---|---|
| v1 | 1010101 | — | — | — | — | 20SMA タッチのみ |
| v2 | 1010102 | 50 | 350 | — | — | 3段階TP+建値SL |
| v3 | 1010103 | 100 | 500 | ATR×0.5 | — | 初期SL追加 |
| v4 | 1010104 | 100 | 500 | ATR×0.5 | SK≤45 or ≥55 | 採用版 |
Python BT の大量グリッドサーチで「TP1=100/TP2=500/SL=ATR×0.5」が浮上
TP1×TP2×SL の 128 通り組み合わせで PF/EV/pips/DD を比較。理論値ベースの top 3 はこんな並び:
| 構成 | 件 | WR | PF | pips | EV | DD |
|---|---|---|---|---|---|---|
| TP1=100/TP2=500/SL=ATR×0.5 | 113 | 31.9% | 2.19 | +2,369 | +20.96 | -327 |
| TP1=100/TP2=350/SL=ATR×0.5 | 113 | 31.9% | 2.06 | +2,109 | +18.66 | -327 |
| TP1=75/TP2=350/SL=ATR×0.5 | 113 | 34.5% | 1.92 | +1,742 | +15.42 | -327 |
SL=ATR×0.5(タイト)が圧倒的に強いのが特徴。タイトSLで損失を最小化し、TP2=500pips の稀な大物で稼ぐ構造。
v3 を「件数維持しつつ WR/PF 改善」したい → v4 に F3 緩和版追加
v3 単独だと WR 31.9% で「グラフがいびつ」(小さい勝ちと時折の大負け)。WR を上げる方向で TP/SL ばかり弄っても EV が下がるトレードオフが続いたので、エントリ側の F3(DTosc SK の OB/OS 判定)を緩和して入れた:
| 構成 | 件 | WR | PF | pips | EV |
|---|---|---|---|---|---|
| v3 単独 | 113 | 31.9% | 2.19 | +2,369 | +20.96 |
| v3 + F3(SK≤45 or ≥55) | 103 | 35.0% | 2.60 | +2,681 | +26.03 |
件数微減(113→103、月8.6件)で WR +3.1pt、PF +0.41、pips/EV ともに改善。これを v4 として実装。
3. v4 の MT5 ストラテジーテスター実測
Exness MT5(XAUUSDz, M5, リアルティック相当)で実走 ST した結果:
| 指標 | v2 | v3 | v4 |
|---|---|---|---|
| 取引数 | 143 | 96 | 81 |
| WR | 70.63% | 36.46% | 40.74% |
| PF | 1.21 | 1.41 | 1.85 |
| 損益 | +$131 | +$196 | +$303 |
| 平均勝ち | $9.07 | $19.39 | $20.00 |
| 平均負け | -$16.90 | -$7.68 | -$7.19 |
| 最大DD | 1.53% | 1.24% | 0.78% |
| 最大連敗 | 5回 (-$156) | 10回 (-$76) | 10回 (-$76) |
| シャープレシオ | 5.15 | 11.93 | 20.34 |
| リカバリF | 0.17 | 1.18 | 3.06 |
初期SL=ATR×0.5 と F3 の組み合わせで 平均負けが大幅縮小(-$16→-$7)、最大DDが約半分になった。
4. Exness MT5 並走稼働の準備
FX PC では既に TitanFX MT5 で Python live_trader が稼働中(主要4PT = PT005 / PT006_v2 / PT101_v3 / PT102_v3 など)。これと同じシグナルロジックを Exness MT5(Raw系、低スプレッド+コミッション $6/lot/side)でも回したい。
live_trader.py を BROKER 環境変数で切替対応
BROKER = os.environ.get('BROKER', 'titan').lower()
MT5_PATHS = {'titan': r"...Titan FX...\terminal64.exe",
'exness': r"...EXNESS_01\terminal64.exe"}
SYMBOL_SUFFIX = {'titan': '', 'exness': 'z'}
要点:
mt5.initialize(path=...)で MT5 パスを明示- SYMBOLS / 各 PT モジュールの
TARGET_SYMBOLSに動的サフィックス(EURUSD→EURUSDz) - ログファイルを broker 別に分離(
live_trader.log/live_trader_exness.log) - default は 'titan' で既存稼働に影響なし
FXBot_Restart_Exness タスクスケジューラ追加
既存 FXBot_Restart と同じ構造(5分tick + ログオン時 + IgnoreNew + RestartCount 3)で、Action を live_trader_exness.py ラッパーに向ける形で新規登録。ラッパーは os.environ['BROKER']='exness' をセットしてから runpy.run_path('live_trader.py') を実行するだけ。
稼働開始時の hiccup(記録)
初回起動で MT5 から (-6, 'Terminal: Authorization failed')。原因は Exness ターミナルがログイン切断中だったこと。MT5 で手動再ログイン + 自動取引ボタンON + Access Point 切替で復旧、14:28 に live_trader_exness プロセス起動成功(PID 9604)。今は土曜なので「Market closed」で約定は失敗するが、シグナル検出は動いており、シンボル変換も正しく NZDUSDz / USDCHFz / XAUUSDz でリクエストできていることを確認。月曜オープン後に正式発注開始の予定。
5. 並走運用 構成図
FX PC (192.168.1.15)
├── TitanFX MT5 ─ live_trader.py (BROKER=titan) ← 既存、PID 704
│ PT005/PT006_v2/PT101_v3/PT102_v3 ほか
│
└── Exness MT5 ─ live_trader_exness.py (BROKER=exness) ← 新規、PID 9604
同じ4PT を XAUUSDz 等で稼働
+
SGD_101_EA_v4 (XAUUSDz M5 チャート常駐)
Magic 番号は既存PT が 10001-80012(4-5桁)、SGD EA が 1010101-1010104(7桁)で完全に桁数が違うため衝突なし。同一 Exness 口座(277675778)で並走しても識別できる。
所感
「インジで矢印は出る、でも EA に落とすのは別作業」というのが今までずっと先送りされていたが、Python BT のグリッドサーチで TP/SL/F3 の最適解を絞り込めたことで、実装側の判断が一気に楽になった。途中の「ManageSMA20Exit が全 stage で発火しないバグ」と「インジ Buffer 経由の SK 取得が動かない問題」は両方ハマりどころで、後者は EA 側に DTosc を自前移植して回避した。
明日(日曜)はマーケット閉場なので、月曜オープン後の最初の発注を観察するのが次のマイルストーン。Exness Raw系のコミッション体系($0.06/0.01lot/side)が PF にどう効いてくるかも実データで確認したい。
