diff --git a/docs/design/2026-09-07-miniqmt-shutdown-migration-assessment.md b/docs/design/2026-09-07-miniqmt-shutdown-migration-assessment.md index f1322ee..95c7c31 100644 --- a/docs/design/2026-09-07-miniqmt-shutdown-migration-assessment.md +++ b/docs/design/2026-09-07-miniqmt-shutdown-migration-assessment.md @@ -98,6 +98,7 @@ | `bin.x64\Lib\site-packages\redis\` | redis-py **3.5.3**(4.4.4 需 py3.8 的 typing.Literal,QMT 内置 3.6 跑不了;残留 4.4.4 会遮蔽,必须清干净) | ⚠️ 版本钉死 | | `C:\redis\` | Redis 8.10.1 Windows 服务(127.0.0.1:6379 + requirepass,密码只在 redis.conf)+ `C:\redis-data`(--dir 必须先建否则 1067) | RPC 总线 | | `C:\Python310\Lib\site-packages\bigqmt_signal_trader\` | 客户端 0.3.25 + psutil 7.2.2(qmt_launcher 依赖,09-08 装) | client 侧 | +| `C:\sanguo_bigqmt\xtquant_bridge\xtquant\` | **xtquant 官方 shim**(上游仓库 `src/xtquant/` v0.3.25 五文件**原样拷贝**,非手写:xtconstant/xttype 纯定义 + xtdata/xttrader 懒加载消 compat 自举环)。PYTHONPATH 前置本目录 → `import xtquant` 命中桥;pip 包本体不动;回退=移出 PYTHONPATH。⚠️ wheel 装不进 site-packages(真 xtquant 占名),故走独立目录 | client 侧 glue(策略 session P4,09-08) | ### 6.2 P3 冒烟记录(09-08 13:14,双市场全绿) @@ -120,21 +121,27 @@ 5. **qmt_launcher restart 会连杀 miniQMT**:mini/完整版/miniquote 同属一个 bin.x64,按目录隔离也躲不开——**只在维护窗用**(16 引擎全停时) 6. get_full_tick 实时性判据:`timetag` 字段盘中应实时跳动,隔夜值停在 00:00 -### 6.4 自愈链设计(三环,第二环待确认) +### 6.4 自愈链(09-08 用户拍板:挂了再说) | 环 | 机制 | 状态 | |----|------|------| | ① 策略自动运行 | QMT「编辑策略交易」勾「终端启动后自动运行」(已配延迟 10 秒) | ✅ 09-08 已勾 | -| ② 客户端自动登录 | 项目自带 `qmt_launcher`:VPS 无免密 bat、`login` 模式受 RDP 锁屏限制 → 唯一路径 = `exe` 模式 + QMT 登录框「记住密码」(**待用户 RDP 确认有无此勾选**);确认后注册看门狗 schtask:`is_qmt_running` 为假 → `open_qmt(mode=exe)` | ⏳ | -| ③ 看门狗(VPS schtask,系统级) | 定时健康检查:`is_qmt_running` + redis ping + 桥 RPC ping,异常记日志/报警;与 Claude session 生死无关 | ⏳ 影子试水期间并行完善 | +| ② 客户端自动登录 | login 模式(自动输密码)前置全部成立(实测 session 未锁屏);需用户放凭证 login.env | ⏸ **挂起——用户拍板「挂了再说」**:大 QMT 真实稳定性未知(README 作者称需每日重启系其经验非我方实测),P4/P5 试水期即实验;真挂了再上(脚本 `bigqmt_watchdog.py` + XML 已留工具箱,注册命令+凭证就位即生效) | +| ③ 看门狗 schtask | 三级健康检查+条件拉起 | ⏸ 同上挂起(schtasks /create 注册动作顺延) | -### 6.5 剩余工序(09-18 大限倒计时) +> 用户决策逻辑存档:miniQMT 常驻数月未挂(精简 headless 特性);大 QMT 为重 GUI 客户端,稳定性待 P4 泡夜+P5 两周实证;挂掉后果当前=影子停摆一晚非灾难。**若试水期暴露大 QMT 需频繁重启,回本节启用 ②③。** -| # | 工序 | 负责 | 前置 | -|---|------|------|------| -| 1 | 自愈链②确认(登录框记住密码)+③看门狗 schtask | infra(本 session) | 用户 RDP 看一眼 | -| 2 | 影子×1 切桥试水 2 交易日(撮合价/涨跌停判定对照 mini 侧) | 策略 session + infra 验收 | 恒等式绿 | -| 3 | 8 影子全切 → 8 实盘逐个切(每切一个跑一日恒等式对账绿再切下一个) | 策略 session + infra | #2 绿 | -| 4 | xt_eod/daily_update_xtdata 连接层改造(`from xtquant import` → compat configure()) | 数据 session | 独立可并行 | -| 5 | 回退预案保留:miniQMT 不卸载,env 切回即回退(至 09-17 有效) | — | — | +### 6.5 P5 全量切换预案(09-18 大限倒排,P4 验收绿后联审启用) + +**回退设计(一切切换的前提)**:桥与 miniQMT 同账号 66639661 同柜台——引擎回退=PYTHONPATH 拿掉 glue 顶替目录+原 supervisor 链路拉起,资产/持仓/委托柜台级共享,无缝衔接。miniQMT 保留不卸载至 09-17。 + +| 波次 | 日 | 动作 | 闸门 | +|------|-----|------|------| +| P4 试水 | 09-09~09-10 | 影子 60 momentum_timing_ex 切桥跑 2 交易日 | 对刻 tick 零漂移+paper_trades 连续+恒等式绿(infra 09-10 收盘验收) | +| W1 影子全切 | 09-11 | 余 5 影子(57/58/59/61/62)以 60 为模板一波切完 | 观察一日全绿 | +| W2 实盘逐切 | 09-12~09-14 | 实盘 8 只逐个切:**channel_test 类试验实例先切、主力(value/momentum/small_cap/all_weather)后切**;每切一只当日 15:10 恒等式绿→次日切下一只;任一红→该引擎立即回退+根因 | 恒等式连续绿 | +| W3 收尾 | 09-15 前 | CTA/monitor/HTTP bridge 备胎 + xt_eod/daily_update_xtdata 连接层(数据 session lane:`from xtquant import` → glue/configure) | 各自冒烟绿 | +| 观察窗 | 09-15~09-17 | 16 引擎全桥运行,恒等式连续 3 日绿 | 09-17 前任意时点可整舰队回退 miniQMT | + +**P5 已知议题**:①compat 无 `get_last_quote` → bullet_trade `get_current_tick` 退 1m bar 快路径,实盘切换前评估延迟影响(影子走 get_full_tick 无碍)②get_full_tick 整市场快照须 `types=["all"]`(显式列表无坑)③桥交易请求串行 ~20 req/s 上限——16 引擎全上后开盘段压力实测,必要时轮询降档/切订阅推送。