硬性策略质量门禁 validate_strategy()
新增 STRATEGY_QUALITY_GATES 检查清单(9条红线): CRITICAL: 止损/止盈存在+>0, 买入区下沿<上沿 HIGH: 止损≤买入区, 买入推荐含RR≥1.5, 港股标currency=HKD MEDIUM: signal短词, tech_snapshot含技术位 enforce_strategy_quality() 插在写入链的两处: 1. reassess_with_context() return前 → 单只重评必过 2. regenerate_all() for d in decisions: 写DB前 → 批量重评必过 不过的:status=review_needed, signal降级→信号不充分 不会写进DB/JSON,除非修复了CRITICAL问题
This commit is contained in:
@@ -94,3 +94,39 @@
|
||||
4. 关闭 TODO #41
|
||||
|
||||
验证: 三条误报标题在修复后均不触发 HIGH 匹配。
|
||||
|
||||
## 2026-07-02 修复:intraday_health_check.py 盘中自检三项BUG
|
||||
|
||||
**发现的问题:**
|
||||
1. 缺少 `sys.path.insert(0, "/home/hmo/MoFin")` → `from mo_data import ...` 报 `ModuleNotFoundError: No module named 'mo_data'`(自愈执行器报告为 "name 'mo_data' is not defined")
|
||||
2. `check_xiaoguo()` 里 `urllib.request.urlopen("http://node122:18003")` 在主机不可达时无限hang住(TCP SYN被防火墙丢,Python timeout失效),导致整个盘中自检超时
|
||||
3. `datetime.strptime` 格式 `"%Y-%m-%d %H:%M"` 与 `read_portfolio()` 返回的 `updated_at`(含秒:`"%Y-%m-%d %H:%M:%S"`)不匹配 → 解析Exception
|
||||
|
||||
**修改内容:**
|
||||
- `/home/hmo/MoFin/scripts/intraday_health_check.py`
|
||||
- 添加 `import socket` 和 `sys.path.insert(0, "/home/hmo/MoFin")`
|
||||
- `check_xiaoguo()`: 用 `socket.settimeout(3)` 替换 `urllib` HTTP检查,防止hang死
|
||||
- `check_price_monitor()`: 将 `strptime` 格式从 `"%Y-%m-%d %H:%M"` 改为 `"%Y-%m-%d %H:%M:%S"`
|
||||
- `check_http()`: 默认timeout从8秒降至5秒(加强健壮性)
|
||||
|
||||
**效果预期:**
|
||||
- 盘中自检不再因 `mo_data` 导入失败而报错
|
||||
- 盘中自检不再因 `node122` 不可达而超时hang死
|
||||
- 价格新鲜度检查正确解析 `updated_at` 时间戳
|
||||
- 相关TODO(#48, #52)已标记resolved
|
||||
|
||||
**发现的问题:**
|
||||
1. price_monitor.py 的 refresh_data_prices() 在 DB 持仓价格为 NULL 时崩溃。`s.get('price', 0)` 在 key 存在但值为 None 时返回 None(不是 0),导致 `abs(None - price)` 触发 TypeError。
|
||||
2. 港股备用通道(fetch_hk_eastmoney_fallback)每只港股有 1 秒 delay,09:30 开盘前港股 API 返回 0 价格,全部 HK 股票走降级通道空耗 ~14 秒。
|
||||
3. Hermes cron 版(profile/scripts/price_monitor.py)与系统 crontab 版(MoFin/price_monitor.py)并存,系统 crontab 每次运行会覆盖 JSON 文件。
|
||||
|
||||
**修改内容:**
|
||||
- `/home/hmo/.hermes/profiles/position-analyst/scripts/price_monitor.py`
|
||||
- 第 335-337 行:`old = s.get('price'); if old is None: old = 0` — 处理 DB NULL 价格
|
||||
- 第 377-379 行:同上,watchlist 更新部分
|
||||
- 第 305-311 行:港股降级通道增加 09:30 开盘检查,开盘前跳过
|
||||
|
||||
**效果预期:**
|
||||
- Hermes cron 版 price_monitor 不会再因 NULL 价格崩溃,DB 已更新 11 只 A 股持仓价格
|
||||
- 港股开盘前不会再空耗 14+ 秒走东财降级通道
|
||||
- 盘中健康检查下次运行时将看到新鲜数据,不再误报
|
||||
|
||||
Reference in New Issue
Block a user