🚀 AI 一键生成 qmt 策略代码

QMT XtQuantTrader 无法连接返回 -1 怎么办?

qmt | 发布时间: 2026/5/25
以下内容由 EasyQuant 生成。

问题描述

XtQuantTrader总是无法连接,返回-1

path = "C:/QMT/userdata"
session_id = int(time.time())
xt_trader = XtQuantTrader(path, session_id)

xt_trader.start()
connect_result = xt_trader.connect()
print("建立交易连接,返回0表示连接成功", connect_result)

解决方案

在使用 XtQuant 进行 QMT 外部 API 开发时,xt_trader.connect() 返回 -1 代表连接 QMT 客户端失败。这通常是由路径配置错误或客户端状态异常引起的。请按照以下步骤逐一排查:

1. 检查 QMT 客户端是否已启动并登录

XtQuant 并不是直接连接券商服务器,而是通过本地的 QMT 客户端进行中转。因此,在运行 Python 代码之前,必须确保 QMT 客户端(通常是 MiniQMT 极简模式)已经启动并且成功登录了交易账号

2. 检查 path 路径是否正确(最常见原因)

你代码中的 path = "C:/QMT/userdata" 可能不正确。根据你使用的 QMT 模式,路径有所不同:

  • MiniQMT(极简模式):路径必须是 userdata_mini 文件夹。例如:r"C:\国信证券QMT交易端\userdata_mini"
  • 完整版 QMT:路径是 userdata 文件夹。例如:r"C:\国信证券QMT交易端\userdata"

建议:右键点击你桌面上启动 QMT 的快捷方式,选择“打开文件所在的位置”,找到对应的 userdata_miniuserdata 文件夹,将绝对路径复制到代码中。注意在 Python 中使用原始字符串 r"路径" 或将反斜杠改为正斜杠 /

3. 确认账号是否开通了外部 API 权限

并非所有 QMT 账号默认都支持外部 Python (XtQuant) 连接。请联系你的券商客户经理,确认你的账号是否已经开通了 QMT 外部 API 权限

4. 检查防火墙或杀毒软件拦截

XtQuant 与 QMT 客户端之间通过本地端口进行通信。请检查是否有杀毒软件(如 360、火绒等)或 Windows 防火墙拦截了 Python 或 QMT 的本地网络通信。

5. 检查版本兼容性

确保你安装的 xtquant 库版本与本地 QMT 客户端的版本相匹配。通常建议从 QMT 安装目录下的 bin.x64/Lib/site-packages 中提取最新的 xtquant 包使用。

修正后的代码示例

假设你使用的是 MiniQMT 极简模式,且安装在 D:\QMT 目录下:

import time
from xtquant.xttrader import XtQuantTrader

# 1. 修改为正确的 userdata_mini 路径(请根据实际安装目录修改)
path = r"D:\QMT\userdata_mini"
session_id = int(time.time())

# 2. 初始化 Trader
xt_trader = XtQuantTrader(path, session_id)

# 3. 启动后台线程
xt_trader.start()

# 4. 建立连接
connect_result = xt_trader.connect()

if connect_result == 0:
    print("连接成功!")
else:
    print(f"连接失败,错误码:{connect_result}。请检查 QMT 是否已登录,且路径 {path} 是否正确。")