🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 平台如何查询标的股票或 ETF 对应的期权链?(含 ContextInfo.get_option_undl_data 代码示例)

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 期权开发:使用 ContextInfo.get_option_undl_data 查询标的对应期权链

Question: QMT 中如何根据标的股票或 ETF 代码获取其对应的全部期权合约?

解决方案

QMT 期权开发:使用 ContextInfo.get_option_undl_data 查询标的对应期权链

在 QMT(迅投量化交易平台)中进行期权策略开发时,获取标的证券(如 50ETF、300ETF 或个股)对应的期权链是极常见的需求。通过 API 提供的 ContextInfo.get_option_undl_data() 函数,可以方便地检索标的代码对应的所有期权合约信息。


1. 函数语法及参数说明

ContextInfo.get_option_undl_data(undl_code_ref)

  • 功能:获取指定期权标的对应的期权品种/合约列表。
  • 参数
    • undl_code_ref (string):期权标的代码,格式为 代码.市场,例如 '510300.SH'。当传入空字符串 '' 时,将获取全市场所有标的对应的期权数据。
  • 返回值
    • 传入指定标的代码时:返回 list,包含该标的对应的期权合约代码列表。
    • 传入空字符串时:返回 dict,以标的代码为 Key,期权合约列表为 Value。

2. 策略示例代码

以下是一个在 QMT handlebar 驱动中查询 300ETF (510300.SH) 对应期权链并输出的完整 Python 示例:

#coding:gbk

def init(ContextInfo):
    # 设置运行标的
    ContextInfo.set_universe(['510300.SH'])
    print("策略初始化完成")

def handlebar(ContextInfo):
    # 仅在最后一根 K 线运行一次,避免重复打印
    if not ContextInfo.is_last_bar():
        return
    
    target_code = '510300.SH'
    
    # 获取指定标的的期权链合约列表
    option_chain = ContextInfo.get_option_undl_data(target_code)
    
    print(f"标的 {target_code} 对应的期权合约数量: {len(option_chain)}")
    print("前 5 个期权合约示例:", option_chain[:5])
    
    # 进一步获取某个期权的详细信息(如行权价、到期日等)
    if option_chain:
        sample_option = option_chain[0]
        option_detail = ContextInfo.get_option_detail_data(sample_option)
        print(f"合约 {sample_option} 详细信息:", option_detail)

3. 补充说明

  1. 配合期权筛选接口:若需要进一步根据到期月份、认购/认沽类型筛选合约,可以使用 ContextInfo.get_option_list(undl_code, dedate, opttype, isavailable) 函数。
  2. 历史期权合约:若涉及回测或盘后数据分析,需确保在 QMT 客户端的【数据管理】中补充并下载了过期合约列表,以保障历史数据的完整性。