3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台中,调用 ContextInfo.get_main_contract() 返回了过期或错误的主力合约(例如返回了 IF2006 而不是当前的 IF2409.IF),通常是由以下两个原因导致的:
根据 QMT API 官方文档,get_main_contract(codemarket) 的参数格式应为品种名.市场代码。对于沪深300股指期货,品种名是 IF,市场代码是 IF(中金所)。
'IF00.IF'(带有00连续合约标识,可能导致解析异常)'IF.IF'QMT 平台与其他云端量化平台不同,它的很多计算(包括主力合约的判定,通常基于持仓量或成交量最大)严重依赖于本地数据。如果你的客户端本地数据没有更新,或者只下载到了 2020 年的数据,系统就会根据旧数据计算,从而返回历史的主力合约(如 IF2006)。
第一步:修改代码中的参数
将代码中的 'IF00.IF' 修改为官方文档推荐的 'IF.IF':
def handlebar(ContextInfo):
# 正确的参数格式:品种名.市场代码
symbol1 = ContextInfo.get_main_contract('IF.IF')
print('当前主力合约为:', symbol1)
第二步:补充本地行情数据
补充完最新的数据并修正参数后,get_main_contract 就能正确根据最新的持仓量/成交量动态返回当前的真实主力合约(如 IF2409.IF)了。