This commit is contained in:
2026-09-15 20:02:05 +08:00
parent bfe89ba122
commit 04daeff141
37 changed files with 2674 additions and 1426 deletions

View File

@@ -40,8 +40,9 @@ py -3.14 -m venv .venv
.venv/Scripts/python.exe -B benchmarks/hotpaths.py
```
25 项离线测试通过,包括原 18 项测试和新增的时间边界、缓存上限、可变订单、信号顺序、原生注解回归测试。
测试使用模拟客户端、临时 SQLite 数据库,不启动真实交易
130 项离线测试通过,覆盖 SDK 与 API 字段契约、委托簿、配置校验、IPO 申购状态机、
ZT 轮次状态机正T/反T、Trend 采集任务与 Python 3.14 回归
测试使用模拟客户端和临时目录,不启动真实交易、不访问真实接口。
同一 CPython 3.14.7、原算法与优化算法对比;每组重复 5 次取中位数:
@@ -61,5 +62,20 @@ py -3.14 -m venv .venv
修改前 18 项测试中 12 项失败,原因是模型仅有 `get_local_order_id` 属性,调用处却使用缺失的 `local_order_id`,存储层还将属性当方法调用。
本次增加同一属性的兼容别名,并统一存储层属性访问,保留原属性名和 API 数据字段;这些是使既有撤单、成交对账测试恢复的接口修复。
审查还发现既有 `strategy/zt/boot.py` 向做 T 的 `manage_positions``open_signal` 提交的参数与函数签名不匹配。
本次未改其调度和资金流程,因此 25 项测试通过不代表该既有做 T 启动路径已可用于实盘。
## ZT 做 T 策略2026-09 重构)
ZT 已从"本地 SQLite 重算持仓 + base/added 分桶归档"改为**正T/反T 轮次状态机**
持仓数量只以券商快照为准,本地只记录"意图与两条腿的状态"。设计说明见
[../docs/zt.md](../docs/zt.md)。
- 新增状态文件 `{qmt_data_dir}/zt_{account_id}_rounds.json`,旧的
`zt_{account_id}_state.db` 不再读写,保留作为审计记录。
- `libs/state.py``strategy/zt/{open,positions,profit}.py` 已删除。
- **不接管账户已有持仓**:只有本策略自己建仓(`base_source=opened`)的证券
才被管理,其它持仓原样保留、不做 T日志以 `[ZT跳过]`/`[ZT汇总] 未接管=N`
体现。升级时会丢弃状态文件里旧版本留下的"接管"记录。
- `zt_sell_ratio``zt_buy_fall_pct``zt_max_price` 现在真正生效;
新增 `zt_t_band_pct`(默认 1.0)与 `zt_max_hold_days`(默认 5
- ZT 日志带 `[ZT启动]/[ZT成交]/[ZT状态]/[ZT轮次]/[ZT决策]/[ZT下单]/[ZT跳过]/
[ZT汇总]/[ZT异常]` 标签,可直接 grep 定位问题;
其中 `[ZT决策]` 每只证券每轮一行,写明最终动作或等待原因。