🚀 AI 一键生成 qmt 策略代码

解决 miniqmt (xtdata) 提示 "not authenticated" 无法获取数据的问题

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

问题描述

miniqmt连接成功了还是无法获取数据

显示如下信息:

***** xtdata 连接成功 *****
服务信息: None
服务地址: None
数据路径: None

RuntimeError: func:getTradingDatesByMarket, error:{ "error" : { "error" : "not authenticated" } }

解决方案

在使用 miniqmt(即 xtdata 模块)时,如果出现 ***** xtdata 连接成功 ***** 但随后报错 RuntimeError: func:getTradingDatesByMarket, error:{ "error" : { "error" : "not authenticated" } },这通常意味着 Python 成功连接到了本地的 QMT 终端,但 QMT 终端本身未能成功连接到券商的数据服务器进行身份验证

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

1. 检查 QMT 客户端是否已正常登录

miniqmt 的数据获取依赖于后台运行的 QMT 客户端。如果 QMT 客户端未启动,或者停留在登录界面未登录,xtdata 将无法通过验证获取数据。

  • 解决方法:请确保 QMT 客户端已经启动,并且已经成功输入账号密码登录进入了主界面。

2. 检查 QMT 客户端的数据连接状态

即使 QMT 已经登录,如果网络波动导致数据服务断开,也会提示未授权。

  • 解决方法:查看 QMT 客户端右下角的状态栏。确保“行情”和“交易”的连接图标是绿色的。如果是红色或灰色,请尝试在 QMT 中点击重新连接,或者检查您的网络设置。

3. 检查账号的数据权限

部分券商的 QMT 终端对历史数据或实时行情有权限控制。如果您的账号没有开通相应的量化数据权限,服务器会拒绝提供数据。

  • 解决方法:联系您的券商客户经理,确认您的资金账号是否已经开通了 QMT 的完整量化权限(包括行情数据权限)。

4. 确保正确的启动顺序

有时候 Python 脚本启动过早,QMT 的数据服务还未完全初始化完毕。

  • 解决方法
    1. 关闭当前的 Python 脚本或 Jupyter Notebook。
    2. 完全退出 QMT 客户端。
    3. 重新启动 QMT 客户端并登录。
    4. 等待 QMT 界面完全加载,右下角数据连接显示正常。
    5. 再次运行您的 Python 脚本。

5. 检查 xtdata 的初始化代码

确保在调用获取数据的函数之前,没有遗漏必要的初始化步骤(虽然通常 import xtdata 会自动连接,但建议规范调用)。

from xtquant import xtdata

# 确保连接成功后再进行数据请求
# 可以尝试先获取一下基础信息测试
try:
    dates = xtdata.get_trading_dates('SH', '20230101', '20231231')
    print("获取交易日历成功,数据服务正常。")
except Exception as e:
    print(f"获取数据失败: {e}")

总结not authenticated 核心原因是底层 QMT 终端未处于有效的已登录且数据连通状态。只要确保 QMT 客户端正常登录且右下角网络状态全绿,该问题即可迎刃而解。