🚀 AI 一键生成 qmt 策略代码

为什么 QMT 提示 get_option_code 未定义?如何正确获取期权代码?

qmt | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

为什么get_option_code这个函数不能使用?

get_option_code这个函数在示例中看到有,但是复制代码,却提示NameError: name 'get_option_code' is not defined,
请问,是投研会员才能用吗?
还是这个函数还没有开发出来使用?

解决方案

您好!出现 NameError: name 'get_option_code' is not defined 这个报错,并不是因为需要投研会员权限,也不是因为该函数未开发,而是因为 QMT 官方 Python API 中根本不存在 get_option_code 这个函数。

您看到的示例代码可能来源于其他量化平台(如聚宽 JoinQuant 等),不同平台的 API 命名规范是不同的。在 QMT 平台中,如果您想获取期权代码列表,需要使用 QMT 专属的期权查询函数。

QMT 中获取期权代码的正确替代方案

在 QMT 中,获取期权代码主要使用以下两个函数(需要通过 ContextInfo 对象调用):

1. ContextInfo.get_option_list() - 获取指定期权列表(推荐)

如果您想根据标的代码、到期月份、期权类型(认购/认沽)来精确获取期权合约代码,请使用此函数。

用法:

ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable)

示例代码:

def handlebar(ContextInfo):
    # 获取到期月份为202101的上交所510300ETF认购合约
    data1 = ContextInfo.get_option_list('510300.SH', '202101', "CALL")
    print("认购合约列表:", data1)
    
    # 获取20210104当天上交所510300ETF可交易的认购合约
    data2 = ContextInfo.get_option_list('510300.SH', '20210104', "CALL", True)
    print("当日可交易认购合约:", data2)

2. ContextInfo.get_option_undl_data() - 获取指定期权标的对应的期权品种列表

如果您想直接获取某个标的(如 510300.SH)对应的所有期权合约列表,可以使用此函数。

用法:

ContextInfo.get_option_undl_data(undl_code_ref)

示例代码:

def handlebar(ContextInfo):
    # 获取 510300.SH 对应的所有期权合约列表
    data = ContextInfo.get_option_undl_data('510300.SH')
    print("510300.SH 对应的期权列表:", data)

总结

请将您代码中的 get_option_code 替换为 ContextInfo.get_option_listContextInfo.get_option_undl_data,并按照上述参数格式传入,即可成功获取期权代码。