3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 qmt 和 miniQMT(xtdata)中,调用 get_market_data_ex 接口返回空的 DataFrame,最根本的原因是本地没有缓存对应时间段的历史数据。
无论是 get_local_data 还是 get_market_data_ex,在 miniQMT(xtdata)环境下,它们默认都是从本地硬盘读取数据的。如果你的本地客户端没有提前下载或缓存过该股票在指定时间段(如 20241227 到 20241231)的日线数据,接口就会直接返回空的 DataFrame,而不会自动去服务器拉取历史数据。
要解决这个问题,必须遵循**“先下载,后读取”**的原则。在调用 get_market_data_ex 之前,先使用 download_history_data 将所需的数据下载到本地。
from xtquant import xtdata
stock_code = "600973.SH"
period = "1d"
start_time = "20241227"
end_time = "20241231"
# 1. 先从服务器下载历史数据到本地
print(f"正在下载 {stock_code} 的历史数据...")
xtdata.download_history_data(
stock_code=stock_code,
period=period,
start_time=start_time,
end_time=end_time
)
print("数据下载完成!")
# 2. 再从本地读取数据
data = xtdata.get_market_data_ex(
field_list=[],
stock_list=[stock_code],
period=period,
start_time=start_time,
end_time=end_time,
count=10
)
print("获取到的数据:")
print(data)
ContextInfo.get_market_data_ex 有一个 subscribe=True 的参数,可以在获取数据的同时订阅实时行情。但在独立运行的 miniQMT(xtdata)脚本中,获取历史数据必须依赖 download_history_data。start_time 和 end_time 的格式正确,日线通常为 YYYYMMDD(如 20241227),分钟线通常为 YYYYMMDDHHMMSS。