问题描述
请问 xtdata.get_market_data_ex 这个可以用 period = '1w' 获取周线数据吗?
解决方案
在 QMT 平台的官方 API 文档中,关于 ContextInfo.get_market_data_ex 接口的 period 参数,明确列出的可选范围包括:
'tick':分笔数据'1m'、'5m'、'15m'等分钟周期'1d':日线数据'l2quoteaux':Level2 行情快照指标'l2transactioncount':Level2 大单统计
虽然文档在 get_market_data_ex 的说明中没有显式列出 '1w',但在 QMT 的整个数据体系中(例如 get_history_data、get_market_data 和 get_local_data 接口),'1w' 均被明确定义为周线数据的标准参数。
因此,您可以直接在 get_market_data_ex 中尝试传入 period='1w' 来获取周线数据。如果该接口在特定版本中未返回预期结果,建议使用明确支持 '1w' 的 get_history_data 或 get_market_data 接口作为替代方案。
替代方案示例:使用 get_history_data 获取周线
如果您需要获取周线数据,可以使用 get_history_data,该接口明确支持 '1w' 参数:
def init(ContextInfo):
# 设定股票池
ContextInfo.set_universe(['000300.SH'])
def handlebar(ContextInfo):
# 获取最近 5 周的收盘价数据
# 参数:长度, 周期, 字段
weekly_data = ContextInfo.get_history_data(5, '1w', 'close')
for stock, prices in weekly_data.items():
print(f"{stock} 最近5周收盘价: {prices}")
总结
您可以尝试在 get_market_data_ex 中使用 period='1w',如果遇到兼容性问题,请切换至 get_history_data(len, '1w', field) 或 get_market_data 来稳定获取周线行情。