问题描述
xtdata.download_history_data2(stock_list=['600000.SH'], start_time="20250612", end_time="20250618", period="tick",callback=on_data1)
执行以上代码在下载历史数据的时候报错{'finished': 1, 'total': 5, 'stockcode': '600000.SH', 'message': ' { error: { ErrorID: 210008'},是什么原因呢?谢谢!
解决方案
在 QMT (迅投量化平台) 中使用 xtdata.download_history_data2 下载历史数据时遇到 ErrorId: 210008,通常是因为请求的数据不存在或请求参数无效。
针对您提供的代码,最直接的原因是时间参数设置错误(请求了未来的时间)。
1. 错误原因分析
观察您的代码:
xtdata.download_history_data2(stock_list=['600000.SH'], start_time="20250612", end_time="20250618", period="tick",callback=on_data1)
您设置的 start_time 为 20250612,end_time 为 20250618。这是一个未来的时间段。服务器上显然没有未来的历史行情数据,因此接口在尝试获取数据时找不到对应内容,从而返回了 ErrorID: 210008(数据不存在/参数错误)。
2. 解决方法
请将 start_time 和 end_time 修改为已经发生的、真实存在的历史交易日。例如,修改为 2023 年或 2024 年的某个有效交易日:
import xtdata
def on_data1(data):
print("下载回调:", data)
# 修改为有效的历史时间
xtdata.download_history_data2(
stock_list=['600000.SH'],
start_time="20230612",
end_time="20230618",
period="tick",
callback=on_data1
)
3. ErrorId: 210008 的其他常见排查点
如果您在修改为正确的历史时间后仍然遇到此错误,请排查以下几点:
- 时间格式是否正确:QMT 接口通常接受
YYYYMMDD或YYYYMMDDHHMMSS格式的字符串。确保没有多余的空格或特殊字符。 - 品种代码是否正确:确保
stock_list中的代码格式为代码.市场(如600000.SH,000001.SZ),且该品种在请求的时间段内已经上市且未退市。 - 周期是否支持:您请求的是
tick数据。部分服务器或账号权限可能对极早期历史的tick数据有限制,或者本地未开启相应权限。如果请求太早的 tick 数据也可能报错。 - 节假日问题:如果
start_time和end_time之间全是节假日(没有交易数据),也可能触发无数据的错误。
总结:请先将代码中的 2025 年修改为实际的历史年份,该报错即可解决。