同时跑 10 个策略不卡顿?QMT 多进程并行技术实战指南
发布时间:2小时前阅读:7
很多量化投资者都会遇到同一个瓶颈:
当同时运行 3 个以上策略时,平台开始卡顿,行情延迟增加,甚至出现漏单、错单。这不是你的电脑配置不够,而是你没有正确使用 QMT 的多进程并行架构。
普通交易软件和大部分第三方量化平台都采用单进程模式,所有策略共享一个 CPU 核心,一旦策略数量增加或计算量增大,就会出现性能瓶颈。
而 QMT 采用了策略单元隔离架构,每个策略单元都运行在独立的进程中,可以分配到不同的 CPU 核心上并行执行,从根本上解决了多策略并发的性能问题。
QMT 多进程架构的核心优势
- 性能线性提升:每个策略单元独立占用一个 CPU 核心,策略数量增加时,性能可以线性提升。比如 8 核 CPU 可以同时稳定运行 8 个计算密集型策略,延迟保持在微秒级。
- 故障隔离:单个策略崩溃不会影响其他策略的运行。如果某个策略出现死循环或内存泄漏,只会导致该策略单元退出,其他策略会继续正常执行。
- 资源可控:可以为每个策略单元单独设置 CPU 和内存限制,避免某个策略占用过多资源影响其他策略。
- 独立配置:每个策略单元可以有独立的行情订阅、交易通道和风控规则,互不干扰。
实战:如何配置 QMT 多进程策略
- 打开 QMT 客户端,点击顶部 "策略交易"→"策略单元管理"
- 点击 "新建策略单元",输入策略单元名称,选择要运行的策略脚本
- 在 "高级设置" 中,为该策略单元分配 CPU 核心(建议每个策略单元分配 1 个物理核心)
- 设置内存上限和最大 CPU 使用率,防止资源过度占用
- 重复以上步骤,为每个策略创建独立的策略单元
- 启动所有策略单元,在 "策略单元监控" 中可以查看每个单元的 CPU、内存使用情况和运行状态
进阶:进程间通信与数据共享
虽然策略单元之间是隔离的,但有时候需要在不同策略之间共享数据,比如全局的市场状态、风控指标等。QMT 提供了多种进程间通信方式:
- 共享内存:适合传输大量实时数据,比如行情快照
- 消息队列:适合传输事件和指令,比如交易信号
- 本地文件:适合传输非实时数据,比如每日收盘后的统计数据
以下是一个简单的消息队列通信示例:
python
运行
# 策略A:发送消息
import zmq
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://127.0.0.1:5555")
def handlebar(context):
# 当满足条件时,发送交易信号
if condition:
socket.send_string(f"BUY 000001.SZ 1000")
# 策略B:接收消息
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:5555")
socket.setsockopt_string(zmq.SUBSCRIBE, "")
def handlebar(context):
# 非阻塞接收消息
try:
message = socket.recv_string(flags=zmq.NOBLOCK)
print(f"收到消息:{message}")
# 执行交易
order_target_percent(message.split()[1], 0.1)
except zmq.Again:
pass
如果你也被多策略卡顿的问题困扰,欢迎点我头像私信。我会免费为你开通 QMT 量化权限,提供多进程架构优化的一对一指导,以及现成的进程间通信模板。风险提示:多进程架构不能完全消除系统风险,极端情况下仍可能出现故障。量化交易存在市场风险、策略失效风险等。本内容仅为投资者教育目的,不构成任何投资建议。
免责声明:本栏目刊载的信息力求准确可靠,但对信息的准确性或完整性不作任何保证,亦不对因使用该等信息而引发的损失承担责任。
温馨提示:投资有风险,选择需谨慎。
-
REITs打新:本周共有4个商业REITs基金发售:唯品商业、首农商业、砂之船和地产商业
2026-05-25 16:03
-
网格交易条件单怎么选?小叩深度测评国金、华泰、国泰海通三大主流券商APP
2026-05-25 16:03
-
聪明投资者都会做的止盈止损,应该如何设置?(附自动交易工具)
2026-05-25 16:03


问一问

+微信
分享该文章
