🚀 AI 一键生成 qmt 策略代码

QMT 客户端绿灯但 xtquant 提示“无法连接行情服务器”怎么办?

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

问题描述

用 xtquant 获取不到数据,报错提示“无法连接行情服务器”,行情和交易是绿灯

第一步:导入依赖(必须写)
import xtquant.xtdata as xtdata

//代码使用,报错提示“无法连接行情服务器”,行情和交易都是绿灯(实盘中)
tick = xtdata.get_full_tick(['600109.SH'])
print(tick)

提示:

无法连接行情服务器(券商说他们没问题),不知是哪里的问题?

解决方案

在使用 xtquant 库获取 QMT 行情数据时,如果遇到“无法连接行情服务器”的报错,且 QMT 客户端本身的行情和交易指示灯都是绿色的,这通常不是券商服务器的问题,而是您的 Python 环境(xtquant)与本地 QMT 客户端之间的通信出现了问题

xtquant 是一个独立的 Python 库,它并不直接连接券商服务器,而是通过连接您本地正在运行的 QMT(或 MiniQMT)客户端来获取数据。如果本地连接失败,就会报这个错误。

以下是详细的排查步骤和解决方法:

1. 确认 QMT / MiniQMT 客户端已启动并登录

xtquant 必须依赖本地运行的 QMT 客户端。在运行您的 Python 脚本之前,请确保:

  • 您已经打开了 QMT 客户端(推荐使用 MiniQMT 极简模式,专门用于 API 接入)。
  • 客户端已经成功登录,且右下角的行情指示灯为绿色。

2. 显式指定 xtdata 的数据路径(最常见原因)

如果您的 QMT 没有安装在默认路径(例如 C:\ 盘),或者系统中存在多个 QMT 版本,xtquant 可能找不到 QMT 的数据目录,从而导致连接失败。

解决方法:在调用任何 xtdata 方法之前,手动指定 QMT 的 userdata_mini 目录路径。

import xtquant.xtdata as xtdata

# 【关键步骤】指定您的 QMT 安装目录下的 userdata_mini 文件夹路径
# 请将下面的路径替换为您电脑上实际的 QMT 安装路径
xtdata.data_dir = r'D:\国信证券QMT\userdata_mini' 

# 尝试获取数据
try:
    tick = xtdata.get_full_tick(['600109.SH'])
    print("获取成功:", tick)
except Exception as e:
    print("获取失败:", e)

注意:路径字符串前面加 r 是为了防止反斜杠 \ 被转义。

3. 检查本地端口是否被占用或被防火墙拦截

xtquant 与 QMT 客户端之间通过本地 Socket 端口进行通信。如果您的防火墙、杀毒软件(如 360、火绒)拦截了本地通信,或者相关端口被其他程序占用,也会导致连接失败。

  • 尝试:暂时关闭杀毒软件或防火墙,重新运行代码测试。
  • 尝试:以管理员身份运行您的 Python IDE(如 PyCharm, VSCode)或命令行。

4. 确保订阅了行情数据

虽然 get_full_tick 可以获取最新快照,但在某些版本的 QMT 中,如果没有提前订阅该股票的行情,可能会返回空数据或报错。建议先调用订阅接口:

import xtquant.xtdata as xtdata
import time

# 1. 指定路径
xtdata.data_dir = r'D:\您的QMT安装目录\userdata_mini'

# 2. 订阅行情 (订阅全推数据)
xtdata.subscribe_whole_quote(['SH', 'SZ'])

# 等待一小段时间让数据推送到本地
time.sleep(2)

# 3. 获取 Tick 数据
tick = xtdata.get_full_tick(['600109.SH'])
print(tick)

5. 检查 xtquant 版本与 QMT 版本的兼容性

如果您最近更新了 QMT 客户端,但没有更新 xtquant 库,可能会出现协议不兼容的情况。

  • 请确保您使用的 xtquant 库是从当前使用的 QMT 安装目录下的 bin.x64\Lib\site-packages 中复制出来的,或者是通过官方提供的最新 pip 源安装的。

总结:90% 以上的情况是因为没有启动 MiniQMT 或者 没有在代码中正确设置 xtdata.data_dir。请优先检查这两点。