Skip to content

聚宽→QMT 信号同步:延迟优化与实测

这是工程说明,不是荐股。入口仍是 信号同步工具;上手步骤见 聚宽信号接到 QMT。数字来自本站联调实测,环境不同会有偏差。不代操盘。

结论先说

付费档(默认 50 毫秒一轮拉信号,可在转换页自定义;服务器下限约 10 毫秒)在本机 QMT 正常挂着、只开一个执行器时:

  • 发信号 → QMT 下单:常见落在几十到一百多毫秒(含 HTTPS 入队与本机轮询)
  • 下单后回执:常见约 40~100 毫秒,且不挡下一笔下单
  • 顺序:按聚宽发出先后 FIFO;同标的先买后卖
  • 去重:同一 signal_id 只执行一次;重复清仓不会双卖

免费档仍是约 5 秒一轮,延迟主要卡在轮询间隔,不是下面这些优化项。

优化了什么

早期版本里,体感会像「每笔卡 4~5 秒」。拆开看,瓶颈多半不在 passorder 本身,而在每条信号都同步查仓 + 同步 HTTPS 回执。后来做了这些改动:

优化作用
拉取即出队QMT 一拉到信号就从队列拿走,不必等回执才清队,避免重复领取
回执异步整轮下单后后台批量回执,HTTP 不再堵在下单路径上
HTTP 长连接复用到本站的 TLS 连接,减少反复握手
买卖不查仓(热路径)买入用信号里的价算股数;清仓按本进程记账卖出,少打 get_trade_detail_data
FIFO 队列Redis RPUSH + 按时间重建,并发下也不倒序
本地去重_done_ids;同标的多余的旧 TARGET_* 在清理时合并
付费短轮询默认约 50ms 一轮(可自定义再缩短),并带重入锁,避免上一轮没跑完又叠一轮
墙钟打到毫秒聚宽「发信号」行带毫秒,方便自己对日志

改完后请重新转换聚宽代码、重新粘贴 QMT 执行器,旧模板没有异步回执与长连接。

怎么测的

用真实链路做了多轮对照(聚宽模拟盘发单 → 本站入队 → 国金 QMT 模拟端执行):

  1. 聚宽日志:KimiQuant 发信号 …(含毫秒)
  2. QMT FormulaOutput:本轮信号 / 下单 / 回执(含毫秒)
  3. 策略样例含连续买卖、同标的重复清仓,用来看顺序和去重

典型结果(付费档、单 QMT):

  • 一批信号里,买卖顺序与聚宽发出顺序一致
  • 同标的连发两次清仓:第一次卖出,第二次「无本地仓跳过」,没有双卖
  • 回执紧跟下单,间隔多在几十毫秒
  • 端到端常见在百毫秒以内;和「几秒一笔」的旧行为不是一个量级

说明:聚宽云端时钟与本机时钟若有偏差,两边时间戳相减可能出现很小的负值,这是时钟差,不是「信号穿越时空」。对延迟结论以数量级为准即可。

可靠性边界(务必看)

这些条件下结果才稳:

  1. 一个 Token 只挂一台 QMT。两台同时拉,可能抢到同一批信号。
  2. 付费档才有短轮询(默认 50 毫秒,可自定义);免费档约 5 秒一轮是产品限制。
  3. 执行器进程重启后,本地仓记账会清空:已有真仓的清仓可能跳过(当前设计是少查仓、求速度)。实盘要自己接受这个取舍,或重启后核对持仓。
  4. 拉到即出队是至多一次:若领取后、下单前进程崩了,该条不会自动重放(避免双下)。
  5. 成交仍取决于券商、行情、资金与 passorder 规则;信号桥只保证指令按时按序送到本机执行器

和旧体感对比

优化前(常见)优化后(付费实测)
每笔额外等待约 4~5 秒(回执/查仓叠在路径上)回执异步,约几十毫秒
多笔堆积容易感觉「永远慢一拍」跟住聚宽发单节奏
顺序曾出现后进先出FIFO,已复测
重复清仓可能重复打单第二次跳过

相关页面

搞不定走 关注 留言。完整讨论仍在知识星球。