返回列表 发布新帖

期权指标数据系列---期权VBA获取认购认沽基础行情数据的方法(1)(附代码!!)

2565 0
发表于 2024-9-10 16:52:33 | 显示全部楼层 阅读模式

场景:想做期权策略的时候,如何获取认购认沽的实值/虚值

第一步:下载期权历史数据

首先需要下载所在标的交易所的全量历史数据。

image.png

第二步:行情→新建模型→VBA模型(这里以上证50ETF期权510050.SH为例)

image.png

🚀️ 设置好新建策略之后,正式进入策略代码部分

1:获取认购和认沽的虚值一档最新价

使用函数 <font color = red>GETOPTCODEBYNO</font>通过虚实序号获取指定的期权代码。

用法: getoptcodebyno(undlCode, side, contracttype, no, day, contracttype1, mode, period);

参数:

undlCode:品种代码,填空的话默认使用主图品种,为期权的标的代码,如 股指期权SH000300 商品期权CF00。

side:买卖方向,<font color = red>C:认购,P:认沽</font>

contractType:合约月份,股指期权时 1:当月 2:下月 3:隔月 4:下季 5:隔季 6:隔下季; 商品期权时 可使用100代表主力期货合约的月份。

no:序号,正数为实值,负数为虚值 (<font color = red>事例:假设需要实值三档,此处填3</font>)

day:以基准交割日的前第几天,缺省时填-1,10000以上代表从交割日后第几天,10001代表交割后第一天(<font color = red>事例:填写-1时是取当天的值</font>)

contracttype1:基准交割日的合约月份,1:当月 2:下月 3:隔月 4:下季 5:隔季 6:隔下季

mode:计算虚实合约的模式 0:前收价为基准 1:收盘价为基准

period:**计算**实合约的模式 0:前收价为基准 1:收盘价为基准 period:基准周期 -1:主图周期、1: 1分钟、2: 5分钟、3: 15分钟、4: 30分钟、5: 60分钟、6: 日

bb:getoptcodebyno('','C',1,-1,-1,1,0,6);
ss:getoptcodebyno('','P',1,-1,-1,1,0,6);

事例第一行bb为:取主图当前标的,交割月为当月的,认购的虚值一档的日k的数据。

事例第二行ss为:取主图当前标的,交割月为当月的,认沽的虚值一档的日k的数据。

2:获取期权的中文名称

bbss0:STKNAME(bb);
ssss0:STKNAME(ss);

使用函数 <font color = red>STKNAME</font>获取当前品种的名称。

事例bbss0为 取得当前bb的期权名称。

事例ssss0为 取得当前ss的期权名称。

3:获取该标的的认沽、认购合约价昨收格

事例一:
认沽合约价昨收:callstock(ss,vtclose,-1,-1),nodraw;
认沽合约价今收:callstock(ss,vtclose,-1,0),nodraw;
事例二:
认购合约价昨收:callstock(bb,vtclose,-1,-1),nodraw;
认购合约价今收:callstock(bb,vtclose,-1,0),nodraw;

使用函数callstock 获取证券数据。

**CALLSTOCK(CODE,TYPE[,CYC,N]):**

引用指定品种代码为CODE,周期为CYC(可选)若不填或者为-1表示使用当前周期,类型为TYPE的数据

N为左右偏移周期个数(可选)0表示引用当前数据,<0为引用之前数据,>0为引用之后数据。

TYPE的值可为:

VTOPEN(开盘) VTHIGH(最高) VTLOW(最低) VTCLOSE(收盘) VTVOL(成交量) VTAMOUNT(成交额) vtOPENINT(持仓量) VTADVANCE(涨数,大盘有效) VTDECLINE(跌数,大盘有效)以及外部数据和万德数据 IOPVOPEN 或 IOPVO(iopv开盘价) IOPVHIGH或IOPVH(iopv最高价) IOPVLOW 或IOPVL (iopv最低价) IOPVCLOSE或IOPVC(iopv收盘价) 如果找不到同期数据,那么将返回最近的一个。

CYC范围为0-19,分别表示:

0: 分笔成交、1: 1分钟、2: 5分钟、3: 15分钟、4: 30分钟、5: 60分钟 、6: 日、7: 周、8: 月、9: 年、10: 多日、11: 多分钟、12: 多秒、13: 多小时、14: 季度线、15: 半年线、16: 节气线、17: 3分钟、18: 10分钟、19: 多笔线 例如:<font color = red>CALLSTOCK('1A0001',VTCLOSE,6,-1)表示引用昨日品种 1A0001 的日线收盘价</font>

事例一为获取当前标的的认购认沽的昨收价格。

4:获取卖出认购的交易量

认购合约价今量:=callstock(bb,vtvol,-1,0),nodraw;

事例为获取当前标的的昨日认购的交易量。

5: 获取主行情标的的昨收价格

bdc:=callstock('',vtclose,-1,0),nodraw;

👀️ 回测效果

代码写好之后点击上方的回测:

image.png

操作动画:(提示:显示编译成功才可以在主行情页面看到回测结果)

动画.gif

期权数据会显示在主行情页面:

image.png

不清楚的内容可添加下方助理微信咨询,有其他 QMT 小技巧想学习的吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!

欢迎和我一起加入迅投组建的 QMT 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。

只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”

企业微信截图_1725599976350.png

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表