问题描述
period 取值 1m\5m\15m\30m 时,都正常,本地也下载了 5m 的历史数据。请大神们帮助。
解决方案
在 QMT 平台中使用 get_market_data 或 get_market_data_ex 函数获取历史行情数据时,period 参数必须严格按照官方 API 文档规定的字符串格式传入。
报错原因分析
您在调用时传入了 period='1',这不是一个合法的周期参数。QMT 无法识别 '1' 代表的是 1分钟、1天还是其他周期,因此会抛出错误。正如您所测试的,传入 '1m'、'5m' 等合法参数时,函数就能正常工作。
正确的 period 参数取值列表
根据 QMT 官方 API 文档,period 参数支持以下取值:
'tick':分笔线'1m':1分钟线'3m':3分钟线'5m':5分钟线'15m':15分钟线'30m':30分钟线'1h':小时线'1d':日线'1w':周线'1mon':月线'1q':季线'1hy':半年线'1y':年线
解决方案
如果您想获取 1分钟线 的数据,请将参数修改为 '1m';如果您想获取 日线 数据,请修改为 '1d'。
代码示例:
def init(ContextInfo):
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 获取 1分钟线 数据,正确传入 '1m'
df_1m = ContextInfo.get_market_data(['close'], stock_code=ContextInfo.get_universe(), period='1m', count=10)
print("1分钟线数据:\n", df_1m)
# 获取 日线 数据,正确传入 '1d'
df_1d = ContextInfo.get_market_data(['close'], stock_code=ContextInfo.get_universe(), period='1d', count=10)
print("日线数据:\n", df_1d)
温馨提示:
- 确保您在【数据管理】中已经下载了对应周期(如 1分钟线、日线)的历史数据,否则即使参数正确,也可能获取不到数据。
- 官方建议优先使用
ContextInfo.get_market_data_ex接口替代旧版的get_market_data,以获得更好的性能和更丰富的数据结构返回。