wshy
|
1840e65f06
|
fix(indicators): 量比改为同花顺/东财标准算法 + 行情时间戳落盘 (#91)
原 vol_ratio_5d 有两个叠加缺陷导致盘中严重偏低:
1. 分母含自身(rolling_mean(5) 算了当天) → 量比偏低约1.4倍
2. 盘中无时间折算(部分量直接比全天量级) → 开盘时段极低
改为标准量比公式(同花顺/东方财富/通达信一致, 已查证官方定义):
量比 = 今日累计成交量 / (前5日均量 × 已交易分钟数/240)
- 分母不含当天(volume.shift(1).rolling_mean(5) / tail(5)前5日)
- 盘中按已交易分钟数折算(×240/elapsed), 盘后系数=1.0不受影响
已交易分钟数用行情 quote_ts 推算(比服务端时间更准, 无网络延迟):
- market_time.py: trading_minutes_elapsed_from_ts(毫秒时间戳)
- normalizer.py: DAILY_COLS 加 quote_ts, 保留 SDK timestamp
- quote_service.py: _build_daily 保留 quote_ts, 传入 elapsed_minutes
- pipeline.py: 两路径(盘后全量/盘中增量)改为标准算法 + ENRICHED_STORAGE_COLS 加 quote_ts
- repository.py: live_agg 新增 _vol_ma5_prev_sum(tail(5)前5日和)
quote_ts 落盘后还可用于: 盘后收盘数据校验(非15:00重拉)、跨天完整性检查。
不改动: vol_ma5/vol_ma10保留原语义(含当天均量), 策略/选股阈值不变。
129后端测试全过, EOD量比验证正确(707636/100000=7.076)。
|
2026-07-09 16:41:02 +08:00 |
|
Gundy
|
ad83a5f960
|
fix(realtime): 交易时段判断与落盘日期显式使用北京时间
quote_service/depth_service 的 _is_trading_hours 原用 naive
datetime.now() 取服务器本地时间; Docker 镜像 (python:slim) 默认
UTC, 北京 9:15-15:05 = UTC 1:15-7:05, 轮询窗口完全错开——Docker
部署的实时行情/五档监控在真实交易时段一次都不会跑。
- 新增 app/market_time.py: CN_TZ 固定 UTC+8 (A股无夏令时,
不依赖系统 tzdata, Windows 桌面版同样可用)
- 两个服务的 _is_trading_hours / date.today() 全部切换
- monitor.py 的 as_of 日期同步对齐
- Dockerfile 加 ENV TZ=Asia/Shanghai 兜底 (日志时间戳)
|
2026-07-03 14:11:26 +08:00 |
|