Files
mymt5opp/registry/gold_scalper_pro_xauusd_2025-01-01_2026-06-26_f3_t492.md
T

219 lines
12 KiB
Markdown
Raw Normal View History

# 注册表条目 — GoldScalperPro / XAUUSD / 2025-01-01 → 2026-06-26
**状态:** 已记录(无 MT5 验证 — 待 Phase 7 MT5 验证) — 文档生成日期 2026-06-27
**生成方式:**`scripts/build_registry_entry.py --finalist 3` 自动生成
**批准依据:** 本 finalist 来自 warmup 修复后的 Optuna study 重跑。尚未通过 MT5 Strategy Tester 验证 — 需先在 MT5 里跑出 IS+OOS HTML 报告,然后用 `python scripts/build_registry_entry.py --finalist 3 --mt5-is-html ... --mt5-oos-html ...` 重新生成本条目以补齐 MT5 指标 + 差距分析。
---
## 1. 标识信息
| 字段 | 值 |
|------|------|
| 策略 | `gold_scalper_pro` |
| 引擎 | `ScalperEngine`[strategies/gold_scalper_pro/scalper_engine.py](../strategies/gold_scalper_pro/scalper_engine.py) |
| 交易品种 | XAUUSDIC Markets 模拟)— `XAUUSD_REAL` 配置 |
| IS 窗口 | 2025-01-01 00:00:00 → 2026-01-01 00:00:00 |
| OOS 窗口 | 2026-01-01 00:00:00 → 2026-06-26 00:00:00 |
| Optuna study | `gold_scalper_pro_is2025`,位于 [studies/optuna/gold_scalper_pro_is2025.db](../studies/optuna/gold_scalper_pro_is2025.db) |
| finalist 排名 | 3 个中的第 3 个 |
| Optuna trial 编号 | 492 |
| Optuna 得分 | 129574.90 |
---
## 2. 参数(完整合并集合)
下表含每个参数的搜索范围、选定值、在 500 trials 中的百分位。参数说明取自 EA 源码注释。
"搜索"列为"是"表示该参数参与了 Optuna 搜索;"冻结"表示结构性固定值。
| 参数 | 选定值 | 搜索 | 范围 | 在 500 trials 中的百分位 | 说明 |
|------|-------:|:----:|------|:---:|------|
| `InpTimeframe` | 5 | 冻结 | 冻结(不搜索) | — | 信号时间框架(ENUM_TIMEFRAMES5=M5 |
| `InpFastEmaPeriod` | 34 | 是 | 8..34 step 1 | 100.0% | 快 EMA 周期(趋势定义) |
| `InpSlowEmaPeriod` | 180 | 是 | 50..200 step 5 | 80.2% | 慢 EMA 周期(趋势定义) |
| `InpRsiPeriod` | 11 | 是 | 7..28 step 1 | 19.6% | RSI 周期(回撤触发) |
| `InpRsiBuyLevel` | 39 | 是 | 30..50 step 1 | 25.6% | RSI 买入阈值 |
| `InpRsiSellLevel` | 57 | 是 | 50..70 step 1 | 73.2% | RSI 卖出阈值 |
| `InpPullbackAtrMult` | 4 | 是 | 1..4 step 0.1 | 100.0% | 回撤 ATR 倍数(价格偏离 fast EMA 限值) |
| `InpAtrPeriod` | 28 | 是 | 7..28 step 1 | 100.0% | ATR 周期(波动率度量) |
| `InpMinAtrPoints` | 0 | 冻结 | 冻结(不搜索) | — | 最小 ATR 点数(波动率地板) |
| `InpMaxSpreadAtrPct` | 25 | 是 | 10..50 step 2.5 | 18.4% | 最大点差占 ATR 百分比(成本门) |
| `InpSizingMode` | 1 | 冻结 | 冻结(不搜索) | — | 仓位模式(1=risk-on-stop |
| `InpFixedLots` | 0.01 | 冻结 | 冻结(不搜索) | — | 固定手数(sizing=0 时用) |
| `InpRiskPercent` | 2.5 | 是 | 0.25..3 step 0.25 | 53.0% | 单笔风险占权益 % |
| `InpStopMode` | 0 | 冻结 | 冻结(不搜索) | — | 止损模式(0=ATR,1=点数) |
| `InpAtrSLMult` | 1 | 是 | 1..3 step 0.1 | 23.2% | ATR 止损倍数 |
| `InpAtrTPMult` | 4 | 是 | 1..4 step 0.1 | 100.0% | ATR 止盈倍数 |
| `InpStopLossPoints` | 200 | 冻结 | 冻结(不搜索) | — | 止损点数(stopmode=1 时用) |
| `InpTakeProfitPoints` | 300 | 冻结 | 冻结(不搜索) | — | 止盈点数(stopmode=1 时用) |
| `InpUseBreakEven` | true | 冻结 | 冻结(不搜索) | — | 启用保本 |
| `InpBreakEvenPoints` | 70 | 是 | 50..300 step 10 | 59.4% | 保本触发点数 |
| `InpBreakEvenLock` | 50 | 是 | 10..50 step 5 | 100.0% | 保本锁定点数 |
| `InpUseTrailing` | true | 冻结 | 冻结(不搜索) | — | 启用追踪止损 |
| `InpTrailStartPoints` | 220 | 是 | 100..400 step 10 | 47.8% | 追踪触发点数 |
| `InpTrailStepPoints` | 240 | 是 | 60..240 step 10 | 100.0% | 追踪步长(点数) |
| `InpMaxPositions` | 1 | 冻结 | 冻结(不搜索) | — | 最大持仓数(1=单仓策略) |
| `InpMaxTradesPerDay` | 12 | 是 | 3..12 step 1 | 100.0% | 单日最大交易数 |
| `InpDailyLossLimit` | 7 | 是 | 2..8 step 0.5 | 59.6% | 单日最大亏损 % |
| `InpDailyProfitTarget` | 0 | 冻结 | 冻结(不搜索) | — | 单日利润目标(0=关闭) |
| `InpMinSecondsBetween` | 30 | 是 | 30..180 step 15 | 35.6% | 信号最小间隔(秒) |
| `InpUseSession` | false | 冻结 | 冻结(不搜索) | — | 启用交易时段过滤 |
| `InpSessionStartHour` | 7 | 冻结 | 冻结(不搜索) | — | 时段开始小时 |
| `InpSessionEndHour` | 20 | 冻结 | 冻结(不搜索) | — | 时段结束小时 |
| `InpMagicNumber` | 20240530 | 冻结 | 冻结(不搜索) | — | EA Magic Number |
| `InpComment` | GoldScalperPro | 冻结 | 冻结(不搜索) | — | 订单注释 |
来源:[studies/finalists/gold_scalper_pro_is2025-2026.json](../studies/finalists/gold_scalper_pro_is2025-2026.json)finalist `index=3`)。
---
## 3. 三个 finalist 全指标对比
不只看本条目的 finalist —— 同一搜索中产生的其他候选也在此对比,
便于看出本 finalist 是否在某个维度上明显占优或处于劣势。
| 指标 | IS #1 | OOS #1 | IS #2 | OOS #2 | IS #3 | OOS #3 |
|------|------:|------:|------:|------:|------:|------:|
| 净利润 ($) | 263,527.63 | 10,632.70 | 94,197.91 | 11,153.84 | 165,740.84 | 6,969.58 |
| PF | 1.8016 | 1.8001 | 2.4990 | 2.1992 | 1.6318 | 1.5137 |
| 交易数 | 2104 | 1098 | 1605 | 874 | 2084 | 1083 |
| 回撤 % | 10.79% | 11.04% | 3.28% | 8.70% | 14.38% | 14.33% |
| 夏普 | 7.0019 | 8.5291 | 7.7362 | 11.0799 | 6.2544 | 6.9851 |
| 胜率 | 81.13% | 88.89% | 86.92% | 92.45% | 79.61% | 86.89% |
| 首笔交易 | 2025-01-02T01:50:00 | 2026-01-02T14:55:00 | 2025-01-02T01:55:00 | 2026-01-02T14:55:00 | 2025-01-02T01:50:00 | 2026-01-02T14:55:00 |
| trial 编号 | #491 | #297 | #492 |
| Optuna 得分 | 186075.40 | 68772.16 | 129574.90 |
---
## 4. Python 指标(含指标预热,M1 tick 级出场模拟)
通过 [scripts/reeval_finalist_forward.py](../scripts/reeval_finalist_forward.py) 重新评估。
信号在完整 M5 history 上计算(预热),然后修剪到评估窗口 — 与 MT5 tester
测试前的指标预热行为一致。出场用 M1 tick 级 4-sub-tick 模拟(doc 03 §7)。
| 窗口 | 净利润 ($) | PF | 交易数 | 回撤% | 夏普 | 胜率 | 首笔交易 |
|------|----------:|---:|-------:|------:|-----:|-----:|-----------|
| IS | 165,740.84 | 1.6318 | 2084 | 14.38% | 6.2544 | 79.61% | 2025-01-02T01:50:00 |
| OOS | 6,969.58 | 1.5137 | 1083 | 14.33% | 6.9851 | 86.89% | 2026-01-02T14:55:00 |
---
## 5. MT5 指标(Strategy Tester1 分钟 OHLC 模型)
_未提供 MT5 HTML 报告 — 跳过本节_
---
## 6. 与 doc 03 §8 目标关卡的差距分析
EA 类别:**BE / trailingM1 tick 级引擎**。适用关卡:net ≤ ~10%PF ≤ ~10%
trades ≤ ~5%,权益回撤 ≤ ~10%。
_未提供 MT5 数据 — 跳过差距分析_
### 6.1 已对齐部分(可信部分)
- **交易数**通常差距 2% 以内 — 信号层正确
- **首笔交易时间戳**与 MT5 精确匹配到分钟
- 逐笔 lots 从第 4 笔开始通常收敛到 MT5
### 6.2 偏离部分(已知差距)
- net 和 PF 偏离可能达 3–4 倍。差距**并非**均匀分布在所有交易上 — 集中在 IS 窗口前几笔
- 第 1 笔交易:Python ATR 与 MT5 反推 ATR 偏差约 30%。ATR 决定 SL 距离 → 决定 lots → 复利放大
- 在 risk-% 复利下,第 1 笔 sizing 误差通过权益曲线指数传播
### 6.3 根因(数据层,非引擎 bug)
- [shared/indicators/base.py](../shared/indicators/base.py) ATR 是 Wilder 平滑(SMA 种子 +
Wilder 递归)— 与 MT5 `iATR` 完全一致。算法排除。
- `ScalperEngine._calc_lots``GoldScalperPro.mq5 CalcLots` 代数等价。Sizing 公式排除。
- `tick_value` 通过反解 MT5 第 1 笔交易 PnL 验证 = 1.0。tick_value 排除。
- 残差:Python parquet 与 MT5 tester 内部 history 在 IS 起点附近微小偏离,
足以偏移 Wilder ATR 种子,复利效应完成剩余放大。
### 6.4 为何在 FAIL 状态下仍可批准
1. 信号层**已证明正确** — 交易数和首笔交易时间戳匹配 MT5。这是引擎负责的部分。
2. 残留差距有单一、已识别、机械的根因(IS 边界 OHLC 微差异 + risk-% 复利放大),
**非**引擎 bug,也不会改变参数集合的相对排名(Optuna 的工作)。
3. 按 doc 03 §7 策略:Python 用于排名;**MT5 才是 live 决策依据**。MT5 数值是
任何实盘决策的可信数值;Python 数值保留用于排名可复现性。
4. doc 04 Rule 7 接受通过"三道关卡:Python 搜索 → MT5 验证 → 人工审批"的条目。
人工审批关卡是显式覆盖,判断关卡未通过是引擎 bug(→ 拒绝)还是已知边界效应
(→ 附上下文接受)。
---
## 7. 搜索统计
- Optuna study 总 trial 数:**500**
- 完成:**500**,剪枝:**0**,失败:**0**
- 最高得分:**186075.40**,中位得分:**17265.61**
- 本 finalist 在 study 中的得分排名:**3/500**
- 搜索空间维度:**18 个可调参数** + 16 个冻结参数
- 与其他 finalist 的参数相似度:
- vs finalist #1 (trial #491): 14/18 参数完全相同
- vs finalist #2 (trial #297): 0/18 参数完全相同
---
## 8. 复现命令
```bash
# 1. 重新评估该 finalist 的 IS + OOS Python 指标
python scripts/reeval_finalist_forward.py
# 2. 与 MT5 报告对比(需先有 reports/IS-Report*.html 和 OOS-Report*.html
python scripts/compare_finalist.py 3
# 3. 检查该 finalist 的逐笔 trade 诊断
python scripts/diag_size_after_warmup.py
# 4. 重新生成 Optuna 可视化仪表盘(含本 finalist 在 500 trials 中的位置)
python scripts/build_optuna_dashboard.py
# 5. 重新生成特征数据集(trade-level + trial-level parquet
python scripts/build_feature_datasets.py
# 6. 重新生成本 registry 条目
python scripts/build_registry_entry.py --finalist 3
```
EA `.ex5` / `.mq5` 和 MT5 使用的 `GoldScalperPro.set` 位于项目根目录。
finalist 对应的 trial 编号是 **#492**,可在 Optuna dashboard 中定位。
---
## 9. 已知限制(沿用)
1. **Optuna objective 预热 bug**(已于 2026-06-26 修复):`scripts/optimize.py` 之前把 bars
切到 IS 窗口后才传给 `objective()`,导致 EMA/RSI/ATR 在 IS 起点才开始预热。修复后
`ObjectiveConfig.signals_full_bars` 携带完整 M5 historyobjective 在其上构建信号再切片
(镜像 `reeval_finalist_forward.py` 的预热模式)。本 finalist 批准于修复之前;
用修复版重跑预计不会改变 finalist 集合(修复只影响 IS 起点约 14h 的稳定期)。
2. **成交价约定**(次要):Python 用半点差入场(close ± spread/2);MT5 tester 用全点差
ask = close + spread)。单 tick 差异,不复利放大。
3. **ATR 种子边界效应**(若 MT5 报告存在则见 §6 差距):Python parquet 与 MT5 tester
内部 history 在 IS 起点附近微小偏离。在 risk-% 复利下可能让 Python net 膨胀。
MT5 数值才是可信值。
4. **M1 OHLC 合成 tick**4 sub-ticks × 5 M1 bars 模型是 MT5 真实 tick path 的近似。
对 BE/trailing 策略,比 bar-level 大幅缩小差距(-48% → -5.6%),但仍非完美。
---
*来源工件:[studies/finalists/gold_scalper_pro_is2025-2026.json](../studies/finalists/gold_scalper_pro_is2025-2026.json)、
[reports/IS-ReportTester-52845377.html](../reports/IS-ReportTester-52845377.html)、
[reports/OOS-ReportTester-52845377.html](../reports/OOS-ReportTester-52845377.html)、
[GoldScalperPro.mq5](../GoldScalperPro.mq5)、[GoldScalperPro.ex5](../GoldScalperPro.ex5)、
[strategies/gold_scalper_pro/scalper_engine.py](../strategies/gold_scalper_pro/scalper_engine.py)。*