之前在本版发过《大QMT 直连文件全灭之后,我用文件桥活下来了》——进程外做 IO 的活法。这次是同一家族的第二阶段:接口整个外接。
解决什么问题
miniQMT 的 xtquant 接口对个人全面关闭(存量也停),大QMT 用户的行情交易被锁在 QMT 进程里。qmt2mini 的做法:桥策略在大QMT 内实盘运行(经 print 通道与外部交换数据),源机起转发器(TCP 51880 / HTTP 51881,token+IP 白名单双层鉴权),局域网内任何机器以两种方式接入:
- shim 包(Python):xtquant 同签名——xtdata / XtQuantTrader / StockAccount 用法与官方一致,无需安装 xtquant,已有 miniQMT 策略改两行环境变量即可迁移
- 裸 HTTP:任意语言 POST {"op":..., "args":...}
实测要点(与文件桥同标准)
- tick 快照 / K线 DataFrame(桥自动增量下载)/ 交易日历 / 合约 / 板块成分:全通
- 实时推送:subscribe_whole_quote 同签名,桥每秒轮询回流,延迟约 2 秒
- 交易全链路:下单(限价/最新)→ 撤单 → 资产/持仓/委托/成交查询 → 成交回报回调
- 鉴权:token 32 位 + allow_ips 白名单;HTTP 401/403 语义清晰
约束(实测后如实报告)
- 下单延迟 0~60 秒(均值 30 秒)——指令经桥的轮询通道执行,分钟级策略无感,秒级敏感需调小 CMD_POLL_SECONDS(会话时长等比缩短)
- 会话预算:交易桥约 112-170 次连接/会话,60 秒轮询约 2-3 小时——每交易日重启一次 QMT(先转发器后桥)
- 转发器运行期间绝不重启——拒连会立即处决桥模型
- 桥离线时请求排队(≥75 秒期限)自动冲账,客户端超时设 ≥90 秒
- 桥存活判定:GET /status 的 q2m_print.last_seen_sec ≤3 秒
开源
github.com/foxneet/qmt2mini(脱敏版)。仅限局域网,勿暴露公网;交易先用最小仓位验证。 |