[sanguo_vnpy_v2] D期实盘集成:miniQMT bridge 架构 #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
C期模拟盘完成(PaperEngine 双源+双层记账)。D期接入实盘(miniQMT)。
跨网通道已打通(FRP+Caddy+DNS,
bridge.mysanguo.topcurl 502=隧道通到 Windows,8765 待写)。完整设计:
docs/superpowers/specs/2026-07-10-phase3d-live-trading-design.md工作清单
完成标记约定
@main-agent ✅ EXECUTE_DONE@main-agent ✅ REVIEW_DONE verdict=approved@main-agent ✅ TEST_DONE result=passed安全约束(⚠️ bridge.mysanguo.top 公网暴露)
X-Bridge-Token共享密钥(环境变量BRIDGE_TOKEN,不进 git)网络层现状(已完成)
bridge.mysanguo.top→ 127.0.0.1:18765 ✅@main-agent ✅ D-1 前置验证通过
Windows xtquant 可用性验证(commit 6a40ae9,check_xtquant.py):
环境:账户 66639661,miniQMT 模拟客户端(独立交易=极简模式),userdata=
D:\国金QMT交易端模拟\userdata_mini结论:xtquant 全链路可用 → D-1 bridge 解锁,可开发。
下一步:编排 Execute Sub Agent 开发 D-1 bridge 服务(FastAPI + xtquant + 鉴权 + 接口),写完部署到 Windows 跑。
@main-agent 📝 D 期进度更新(goal 自主部分完成)
✅ 已自主完成(代码层验证 + commit + push)
eff9ed2ff84b3d379836d⏳ 剩余需 Windows 端配合(miniQMT 只在 Windows,无法自主)
Windows 一站式清单:
docs/deployment/d-phase-windows-deploy.md(§1 获取代码 → §3 实测 → §7 自启 → §6 D-4a 联调 → 故障排查)等用户在 Windows 执行 D-1 实测后,继续 D-4a 联调。
@main-agent ✅ D-4a 端到端影子下单验证通过(真 bridge + 真 miniQMT)
bridge 公网实测(NAS → bridge.mysanguo.top,token 鉴权):
D-4a 两路链路均端到端通:
order_id=1090519054_shadow_trades_to_bridge自动查 paper_trades → bridge_client → 真 bridge → miniQMT 报单order_id=1090519055→paper_shadow_orders(41,1090519055,ok)记录D-3 影子逻辑(查成交+幂等+bridge_client)在真 bridge 下端到端验证通过(非 mock)。
剩余:
补:backtest_results.db 已 init 补
paper_shadow_orders表(旧库 D-3 新表缺失,已修复)。live_step 在 7/09 跑通但 DoubleMa 当日无信号,自动信号成交留交易日 scheduler 自然触发(影子逻辑已端到端验证)。@main-agent ✅ D-4c 模式 B reconcile 完成(代码+测试+真桥验证)
D-4c 模式 B(bridge 回报驱动账本):
reconcile_from_bridge:读 bridge /account /positions → 校正 sanguo account 现金+持仓+持久化(bridge 为准,纠模拟撮合漂移)from_bridge_code:bridge sh/sz 前缀 → 纯数字码(account.positions key)live.mode_b开关(默认关)验证:
D 期状态:
仅剩 D-4b(周一 scheduler 自然触发成交后对比模拟撮合 vs bridge 真实成交价)。
@main-agent 📝 D-4b 诊断结论 + 两个运维发现
D-4b 成交价对比 = 周一 7/13(确认日历约束):
[120141][证券交易未初始化],init_date=20260710 ≠ curr_date=20260711运维发现 1:miniQMT 非交易日报 120141(交易日才初始化交易通道)。scheduler 设计应只在交易日 20:30 触发实盘下单(周末/节假日跳过)。
运维发现 2:bridge 不自动重连 miniQMT。miniQMT 重启后 bridge 的 xtquant 连接失效(health connected=true 假阳性),需手动重启 bridge。D-2 稳定性后续加「health 断线检测 + 自动 reconnect」。
D 期状态:6 项完整验证 + D-4b 信号半边。D-4b 成交价对比周一 7/13(cron 21a04654 20:22 收官)。
@main-agent ✅ bridge 稳定性完善完成(commit cadc59e)
3 项完善(修复 comment #1127 运维发现):
_open_session抽离 +reconnect()(stop 旧 trader + 重建)+_retry_with_reconnect(query/order 失败自动 reconnect 重试一次)。miniQMT 重启后 bridge 不再需要手动重启。is_alive()(query_stock_asset 探活)+ 5s 缓存 + 断线后台 reconnect(不阻塞响应)。消除connected:true假阳性。trade_calendar.is_trading_day(周一-周五)+/order非交易日 warning(120141 提示)。测试:test_gateway 15 + test_trade_calendar 6 = NAS 21 passed,回归 test_bridge_client/test_d4a 10 绿(共 31)。
待 Windows 实测:用户更新 bridge 代码 + 重启 bridge + 重启 miniQMT → 验证 bridge /health 自动探活重连(miniqmt_connected 自动恢复 true,无需手动重启 bridge)。