3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
get_option_detail_data 获取期权详细信息在 QMT(迅投量化系统)平台编写期权量化交易策略时,获取期权合约的具体参数(如行权价、到期日、保证金比例、合约乘数等)是进行期权定价(如 BS 模型)和风控管理的必要步骤。QMT 提供了 ContextInfo.get_option_detail_data 接口来满足这一需求。
ContextInfo.get_option_detail_data(optioncode) 用于获取指定期权合约的详细属性信息。
str): 期权合约代码,格式为 代码.市场,例如 '10001506.SHO'。若传入空字符串 '',则默认获取当前主图对应的期权品种信息。返回一个字典(dict),包含该期权合约的各项详细参数。
返回字典包含以下常用关键字段:
字段名 (key) |
字段类型 | 说明 |
|---|---|---|
InstrumentID |
str |
期权代码 |
ExchangeID |
str |
期权市场代码(如 SHO、SZO) |
OptExercisePrice |
float |
期权行权价 |
ExpireDate |
int/str |
到期日 |
EndDelivDate |
int/str |
期权行权终止日 |
LongMarginRatio |
float |
多头保证金率 |
ShortMarginRatio |
float |
空头保证金率 |
VolumeMultiple |
int |
合约乘数 |
optType |
str |
期权类型(CALL 认购 或 PUT 认沽) |
OptUndlCode |
str |
标的证券代码 |
OptUndlMarket |
str |
标的证券市场 |
UpStopPrice / DownStopPrice |
float |
当日涨停价 / 跌停价 |
以下是在 QMT handlebar 中调用 get_option_detail_data 获取特定期权合约属性并打印的完整示例:
#encoding:gbk
def init(ContextInfo):
# 示例订阅上交所 50ETF 期权合约
ContextInfo.option_code = '10001506.SHO'
def handlebar(ContextInfo):
# 仅在最后一根 K 线上获取并打印期权详细信息
if not ContextInfo.is_last_bar():
return
# 获取指定期权的详细信息
option_detail = ContextInfo.get_option_detail_data(ContextInfo.option_code)
if option_detail:
print(f"--- 期权合约 {ContextInfo.option_code} 详细信息 ---")
print(f"期权类型: {option_detail.get('optType')}")
print(f"行权价格: {option_detail.get('OptExercisePrice')}")
print(f"到期日期: {option_detail.get('ExpireDate')}")
print(f"空头保证金率: {option_detail.get('ShortMarginRatio')}")
print(f"合约乘数: {option_detail.get('VolumeMultiple')}")
print(f"标的代码: {option_detail.get('OptUndlCode')}.{option_detail.get('OptUndlMarket')}")
else:
print("未能获取到期权详细信息,请检查合约代码或数据是否补充完整。")
ContextInfo.get_option_list() 接口可以先筛选出符合条件的期权代码列表,再通过 get_option_detail_data() 批量获取属性以完成策略建仓逻辑。