3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在QMT(迅投极速量化交易系统)中,获取期权合约的详细信息(如行权价、到期日、保证金率、合约单位等)主要通过 ContextInfo.get_option_detail_data(optioncode) 接口来实现。
ContextInfo.get_option_detail_data(optioncode)optioncode (string):期权代码,例如 '10001506.SHO'。当填写空字符串 '' 时,默认获取当前主图的期权品种信息。通过该接口获取的字典中,包含以下核心键值对:
| 键名 (Key) | 含义 | 示例/说明 |
|---|---|---|
| OptExercisePrice | 期权行权价 | 例如:3.5 |
| ExpireDate | 到期日 | 格式通常为:20210127 |
| LongMarginRatio | 多头保证金率 | 比例值 |
| ShortMarginRatio | 空头保证金率 | 比例值 |
| OptUnit | 期权合约单位 | 例如:10000 |
| optType | 期权类型 | CALL (认购) 或 PUT (认沽) |
| OptUndlCode | 期权标的证券代码 | 例如:510300 |
| OptUndlMarket | 期权标的证券市场 | 例如:SH |
| OpenDate | 发行日期 | 格式:YYYYMMDD |
| EndDelivDate | 期权行权终止日 | 格式:YYYYMMDD |
以下是一个在QMT策略中获取并打印期权合约详细信息的完整示例:
#coding:gbk
def init(ContextInfo):
# 设定需要查询的期权合约代码(以上交所50ETF期权为例)
ContextInfo.option_code = '10001506.SHO'
print("初始化完成,准备在handlebar中获取期权详情...")
def handlebar(ContextInfo):
# 仅在最后一根Bar运行一次,避免重复打印
if not ContextInfo.is_last_bar():
return
# 获取期权详细信息
option_detail = ContextInfo.get_option_detail_data(ContextInfo.option_code)
if option_detail:
print("=== 期权合约 [%s] 详细信息 ===" % ContextInfo.option_code)
print("期权类型: %s" % option_detail.get('optType'))
print("行权价格: %s 元" % option_detail.get('OptExercisePrice'))
print("到期日期: %s" % option_detail.get('ExpireDate'))
print("合约单位: %s" % option_detail.get('OptUnit'))
print("空头保证金率: %s" % option_detail.get('ShortMarginRatio'))
print("多头保证金率: %s" % option_detail.get('LongMarginRatio'))
print("标的证券代码: %s.%s" % (option_detail.get('OptUndlCode'), option_detail.get('OptUndlMarket')))
print("====================================")
else:
print("未获取到期权合约 %s 的详细数据,请检查合约代码是否正确或本地数据是否补充完整。" % ContextInfo.option_code)
SHO 上交所期权、SZO 深交所期权)的过期合约列表和历史行情数据,否则可能无法获取到历史期权合约的详细信息。OptUndlRiskFreeRate(无风险利率)和 OptUndlHistoryRate(历史波动率),可用于期权定价模型(如BS模型)的计算。