🚀 AI 一键生成 qmt 策略代码

QMT/XtQuant 交易接口 connect() 返回 -1 怎么办?

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

问题描述

connect_result = xt_trader.connect() 返回-1问题

session_id = int(time.time())
xt_trader = XtQuantTrader(miniqmt_path, session_id)
acc=StockAccount(accountid, 'STOCK')
# 创建交易回调类对象,并声明接收回调
callback = MyXtQuantTraderCallback()
xt_trader.register_callback(callback)
# 启动交易线程
xt_trader.start()
# 建立交易连接,返回 0 表示连接成功
connect_result = xt_trader.connect()
print(f"connect_result:{connect_result}")

connect_result 返回的是-1 ,miniqmt 已登陆,什么原因?

解决方案

在 QMT (XtQuant) 量化交易接口中,xt_trader.connect() 返回 -1 表示 Python 脚本与 MiniQMT 客户端建立连接失败。即使您的 MiniQMT 已经登录,仍可能由以下几个常见原因导致:

1. miniqmt_path 路径配置错误(最常见原因)

XtQuantTrader 初始化时传入的 miniqmt_path 必须是 MiniQMT 安装目录下的 userdata_mini 文件夹的绝对路径,而不是 QMT 的根目录或 .exe 文件的路径。

  • 错误示例r'D:\国信证券QMT交易端\bin.x64'r'D:\国信证券QMT交易端\bin.x64\xtquant.exe'
  • 正确示例r'D:\国信证券QMT交易端\userdata_mini'

2. XtQuant 库版本与 MiniQMT 客户端版本不匹配

如果您通过 pip install xtquant 安装的 Python 库版本,与您电脑上运行的 MiniQMT 客户端版本差异过大,可能会导致底层通信协议不兼容,从而连接失败。

  • 解决办法:建议直接使用 QMT 安装目录下自带的 xtquant 库,或者确保 pip 安装的版本与客户端版本一致。

3. 端口冲突或防火墙拦截

XtQuant 与 MiniQMT 之间通过本地 Socket 端口进行通信。如果本地端口被其他程序占用,或者被杀毒软件/防火墙拦截,也会导致连接失败。

  • 解决办法:检查是否有安全软件拦截了 Python 或 MiniQMT 的本地网络请求,尝试暂时关闭防火墙测试。

4. 客户端未完全初始化

虽然 MiniQMT 已经登录,但如果底层交易服务尚未完全启动完毕,立即调用 connect() 可能会失败。

  • 解决办法:在登录 MiniQMT 后,稍等几秒钟,确保客户端界面数据加载完毕后,再运行 Python 脚本。

5. 账号权限问题

部分券商的 QMT 账号需要单独向客户经理申请开通 API 交易权限。如果未开通权限,即使客户端能登录,API 也可能拒绝连接。


💡 排查代码示例

请检查您的初始化代码是否类似于以下正确格式:

import time
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount

# 1. 确保路径精确到 userdata_mini 文件夹
miniqmt_path = r'D:\您的QMT安装目录\userdata_mini'
accountid = '您的资金账号'

session_id = int(time.time())
xt_trader = XtQuantTrader(miniqmt_path, session_id)
acc = StockAccount(accountid, 'STOCK')

# 2. 启动交易线程
xt_trader.start()

# 3. 建立连接
connect_result = xt_trader.connect()
if connect_result == 0:
    print("连接成功!")
else:
    print(f"连接失败,错误码: {connect_result}。请检查 miniqmt_path 是否正确指向 userdata_mini 目录。")