feat: 策略复盘闭环 Phase1
- 新增 scripts/strategy_review.py: 遍历所有active策略 - 腾讯API实时价对比止损/止盈/入场点 - 分类: correct/wrong/partial/pending - 失败模式归因: 止损过紧/入场过早/止盈过远等 - 写入 accuracy_stats 表(首条真实数据) - 新增 docs/strategy-review-loop.md: 完整闭环设计文档 - 含失败模式→修复方向映射表 Phase1 结果: 38条策略, 94.7%准确率(19条待定), 1条止损过紧
This commit is contained in:
@@ -20,3 +20,78 @@
|
||||
- 自选股18只全部处于买入区(价格距离买入区<3%),属正常范围
|
||||
- 其中2只策略为空(楚江新材、中谷物流)— 需补充
|
||||
- 整体仓位93.02%,弱势+深套占比41.9%>40%
|
||||
|
||||
## 2026-06-25 11:50 价格监控updated_at修复
|
||||
|
||||
**发现了什么:** 健康检查误报"价格数据649秒未更新(portfolio.json)"
|
||||
|
||||
**根因链:**
|
||||
1. `price_monitor.py` 写 portfolio.json 时仅在价格变化时写入,且不更新 `updated_at` 字段
|
||||
2. 盘中价格稳定(如午盘横盘)→ portfolio.json 长时间不更新 → `updated_at` 停留在上次变动时间
|
||||
3. `intraday_health_check.py` 检查 `updated_at` 是否超过10分钟无更新 → 触发误报
|
||||
|
||||
**修改了什么:**
|
||||
- 文件:`/home/hmo/MoFin/price_monitor.py`(同步到 profile scripts 副本)
|
||||
- 逻辑变更:
|
||||
- 价格变化写入时:同时更新 `pf['updated_at']` 为当前时间
|
||||
- 价格无变化时:每10分钟强制刷新一次 `updated_at`,避免横盘期误报
|
||||
|
||||
**效果预期:** 价格稳定横盘时 portfolio.json 的 updated_at 仍每10分钟刷新一次,健康检查不再误报。
|
||||
|
||||
## 2026-06-25 13:20 stale_push_wlin 流程修复:先重评后推送
|
||||
|
||||
**发现了什么:** 自选买入提醒中推送的策略数据可能滞后。例如13:11报告中德明利止盈810.78但现价882已超过。
|
||||
|
||||
**根因链:**
|
||||
1. stale_push_wlin 只在 `[STRATEGY_STALE]` 标记的票触发重评,非stale的票直接推旧策略
|
||||
2. 策略的止盈/止损/信号在推送前未刷新,可能出现推了止盈位但价格已超过的情况
|
||||
3. Dad 指出正确流程应该是:推荐前先重评 → 重评确认有效再推
|
||||
|
||||
**修改了什么:**
|
||||
- 文件:`/home/hmo/.hermes/profiles/position-analyst/scripts/stale_push_wlin.py`
|
||||
- 逻辑变更:
|
||||
- 收集所有在买入区的自选(stale + 非stale),统一先调 trigger_regen_sync() 重评
|
||||
- 重评完成后重新读取 decisions.json 获取最新策略数据
|
||||
- 用重评后的 timing_signal 重新判断是否可推(不再用旧 is_stale 标记)
|
||||
- 同一次推送中可能有多只票,全部用新数据出报告
|
||||
|
||||
**效果预期:** 每次推送自选提醒前,所有预推票都经过最新一次策略重评,止盈/止损/信号不滞后。
|
||||
|
||||
## 2026-06-25 14:00 三点联动修复
|
||||
|
||||
**发现了什么:** Dad反馈三个问题:(1) price_monitor的区进区出/重评告警太吵 (2) 现金只有total字段,没有区分可用/冻结,买力算错 (3) 德明利卖出后未及时更新止盈
|
||||
|
||||
**修改了什么:**
|
||||
|
||||
**① price_monitor XMPP推送降噪**
|
||||
- 文件:`/home/hmo/MoFin/price_monitor.py`
|
||||
- 原:所有outputs(⚡进入买入区 🔄重评 📊新策略 ✅全量重评)全部推XMPP
|
||||
- 改:只推 ⚠️止损跌破 和 🌀情景切换,其余只local print不推
|
||||
|
||||
**② 现金三级结构**
|
||||
- 文件:`/home/hmo/MoFin/data/portfolio.json`
|
||||
- 新增 `cash_available`(可用买力)和 `cash_frozen`(冻结在途)字段
|
||||
- stale_push_wlin.py:load_cash() 和 calc_position() 优先读 cash_available,fallback到 cash
|
||||
- 推荐中的买力计算现在用可用现金而非总现金
|
||||
|
||||
**③ 德明利自选策略重评**
|
||||
- 文件中:`/home/hmo/MoFin/data/decisions.json`
|
||||
- 原止盈810.78(已被涨停突破)
|
||||
- 新止损810.0 新止盈1153.26 新买入区873.18~908.82 | RR=3.24
|
||||
- 已保证自选策略和其他自选一样走自动重评流程
|
||||
|
||||
**效果预期:** 系统不再推送区进出/重评噪音,推荐用可用现金算买力,德明利自选随时可重新入场。
|
||||
|
||||
## 2026-06-25 14:50 price_monitor 自选止损止盈告警屏蔽
|
||||
|
||||
**发现了什么:** 德明利(001309)已清仓转自选,但 price_monitor 仍对其推送止盈警报("⚡ 德明利进入止盈区间"),数据无误但信号无意义,在Dad卖飞后伤口撒盐。
|
||||
|
||||
**根因:** get_trigger_zones() 对自选和持仓一视同仁返回止损/止盈区间,price_monitor检查所有active decision。
|
||||
|
||||
**修改了什么:**
|
||||
- 文件:`/home/hmo/MoFin/price_monitor.py`
|
||||
- 函数 `get_trigger_zones(d)`:
|
||||
- 买入区间:自选和持仓都监控(自选需要zone to trigger重评)
|
||||
- 止损+止盈:仅持仓(share>0)才监控,自选不生成止损/止盈zone
|
||||
|
||||
**效果预期:** 已清仓的德明利/药明康德等自选不再推送止损止盈告警。买入区进出仍触发重评(内部不推送),保证策略持续更新。
|
||||
|
||||
Reference in New Issue
Block a user