3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在使用 miniqmt(即 xtdata 模块)时,如果出现 ***** xtdata 连接成功 ***** 但随后报错 RuntimeError: func:getTradingDatesByMarket, error:{ "error" : { "error" : "not authenticated" } },这通常意味着 Python 成功连接到了本地的 QMT 终端,但 QMT 终端本身未能成功连接到券商的数据服务器进行身份验证。
以下是详细的排查和解决方法:
miniqmt 的数据获取依赖于后台运行的 QMT 客户端。如果 QMT 客户端未启动,或者停留在登录界面未登录,xtdata 将无法通过验证获取数据。
即使 QMT 已经登录,如果网络波动导致数据服务断开,也会提示未授权。
部分券商的 QMT 终端对历史数据或实时行情有权限控制。如果您的账号没有开通相应的量化数据权限,服务器会拒绝提供数据。
有时候 Python 脚本启动过早,QMT 的数据服务还未完全初始化完毕。
确保在调用获取数据的函数之前,没有遗漏必要的初始化步骤(虽然通常 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 客户端正常登录且右下角网络状态全绿,该问题即可迎刃而解。