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

QMT平台如何获取期权合约的行权价格和最后交易日?(附Python代码示例)

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

问题描述

qmt 期权行权避坑:如何使用 get_option_detail_data 获取期权最后交易日与行权价?
qmt怎么获取期权合约的行权价格和最后交易日?

解决方案

QMT期权交易避坑指南:如何获取期权行权价与最后交易日

在期权量化交易中,**行权价格(Strike Price)到期日/最后交易日(Expiration Date)**是制定交易策略、计算隐含波动率(IV)以及进行自动化行权风控的核心要素。如果获取的数据不准确,极易导致期权因未及时行权而价值归零。

QMT平台提供了专门的接口 ContextInfo.get_option_detail_data(optioncode) 来获取期权合约的详细信息。本文将为您详细解析该接口的使用方法及避坑指南。


1. 核心接口介绍:get_option_detail_data

接口用法:
ContextInfo.get_option_detail_data(optioncode)

参数说明:

  • optioncode:期权合约代码,需带市场后缀。例如上交所期权 '10003280.SHO',深交所期权 '159919.SZO'。若传入空字符串 '',则默认获取当前主图的期权品种信息。

关键返回值字段:
调用该接口后会返回一个字典(dict),其中包含期权合约的完整静态属性。获取行权价与到期日主要关注以下字段:

字段名 含义 说明
OptExercisePrice 期权行权价 期权合约约定的行权价格(单位:元)
ExpireDate 到期日 期权合约的到期日期,通常也是最后交易日(格式:YYYYMMDD)
EndDelivDate 行权终止日 期权买方可以申报行权的最后截止日期
optType 期权类型 'CALL'(认购)或 'PUT'(认沽)
OptUnit 合约单位 单张期权合约对应的标的证券数量

2. Python 代码示例

您可以在 QMT 的 handlebarinit 函数中通过以下代码获取并打印期权合约的行权价和到期日:

#coding:gbk

def init(ContextInfo):
    # 设定需要查询的期权合约代码(以上交所50ETF期权为例)
    ContextInfo.option_code = '10001506.SHO'

def handlebar(ContextInfo):
    # 仅在最后一根Bar运行一次,避免重复打印
    if not ContextInfo.is_last_bar():
        return
        
    # 获取期权详细信息
    option_detail = ContextInfo.get_option_detail_data(ContextInfo.option_code)
    
    if option_detail:
        # 提取行权价与到期日
        strike_price = option_detail.get('OptExercisePrice', '未知')
        expire_date = option_detail.get('ExpireDate', '未知')
        end_deliv_date = option_detail.get('EndDelivDate', '未知')
        opt_type = option_detail.get('optType', '未知')
        
        print(f"期权合约: {ContextInfo.option_code}")
        print(f"期权类型: {opt_type}")
        print(f"行权价格: {strike_price} 元")
        print(f"到期日期: {expire_date}")
        print(f"行权终止日: {end_deliv_date}")
    else:
        print(f"未能获取到合约 {ContextInfo.option_code} 的详细数据,请检查合约代码是否正确或数据是否下载完整。")

3. 期权交易避坑提示(重要)

  1. 历史过期合约数据缺失
    如果您需要获取已经退市的历史期权合约信息,必须先在QMT客户端的【数据管理】中,手动补充下载过期合约列表和对应的历史行情数据,否则接口会返回空值。
  2. 市场后缀不要写错
    上交所期权后缀为 .SHO,深交所期权后缀为 .SZO。写错后缀(如写成 .SH.SZ)会导致接口无法识别合约。
  3. 行权日与最后交易日的微小差异
    对于绝大多数境内场内股票期权,ExpireDate(到期日)与最后交易日是同一天,但为了安全起见,建议在策略中同时参考 EndDelivDate(行权终止日),确保在行权窗口关闭前完成行权申报或平仓操作。