3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台中,遇到代码执行后无法获取到指定时间段(如五月份)的 Tick 数据,通常是由以下几个原因导致的。请逐一排查:
如果您使用的 download_history_data 是基于 xtdata 模块的下载函数,该函数默认是异步执行的。这意味着代码触发下载请求后,会立刻执行下一行代码 ContextInfo.get_market_data_ex,而此时数据根本还没有下载到本地硬盘。
解决方法:
在策略中不建议直接混用下载和读取。正确的做法是:
tick 周期,补充所需时间段的数据。Tick 数据的数据量非常庞大,绝大多数券商的 QMT 服务器不会保留长期的历史 Tick 数据。通常情况下,服务器只保留最近 1 个月到 3 个月的 Tick 数据。如果您尝试下载距离当前时间较远的五月份数据,服务器上可能根本没有这些数据,因此下载操作实际上没有获取到任何内容。
解决方法:
1m(一分钟)数据代替 tick 数据。subscribe=False 参数的限制在您的代码中,ContextInfo.get_market_data_ex 的参数设置了 subscribe=False。这表示该函数仅从本地硬盘读取数据,不会向服务器发起实时请求。如果前面的下载步骤失败或未完成,本地没有数据,该函数就会返回空。
虽然您使用了 strftime("%Y%m%d%H%M%S") 进行了格式化,但请确保传入 get_market_data_ex 的 start_time 和 end_time 严格符合 QMT 的要求(通常为 YYYYMMDD 或 YYYYMMDDHHMMSS 字符串)。
123056.SZ 和 123089.SZ 在 2025年4月到5月的 Tick 数据,看能否补充成功。ContextInfo.get_market_data_ex 进行读取。download_history_data,直接将 subscribe=True,或者使用 ContextInfo.get_full_tick() 获取最新快照。