A:
期权主力平值合约在不同日期会发生调整,需要在指定日获取对应的主力合约行情后合并。
获取
指定日期权主力平值合约参考:FAQ:
Q:如何获取期权主力、平值、虚值与实值合约代码?
其中:
1.获取商品期权主力平值合约需要使用标的主力合约代码
2.获取指数期权主力平值合约需要使用指数代码
3.获取ETF期权主力平值合约需要使用ETF代码
获取所有期权标的代码:FAQ:
OP_GetUnderlyingSecurity
获取期货标的主力代码:FAQ:
Q:期货代码、名称(连续合约、主力合约、指数合约)编制规则
实现模型:opMarket
function opMarket(begt,endt,cy,stockid);
begin
{
说明:获取指定标的品种期权主力平值合约在指定日期序列与周期下的行情数据
参数:
begt:datetime 开始日期
endt: datetime 截止日期
cy:string 周期
stockid:string 标的品种代码
返回:数组,行情数据列表
}
tarr := specall(MarketTradeDayQk(begt,endt),array(pn_cycle():cy_day()));
rt := array();
for i,t in tarr do
begin
lt := specall(ref(sp_time(),1),array(pn_cycle():cy_day(),pn_stock():"SH000001",PN_Date():t));
zlid := spec(base(708004),stockid); //主力代码
bdstock := zlid?ZLToFuturesID(zlid,t):stockid; //标的合约
SetSysParam(pn_cycle(),cy_day());
stock := OptionFlatZLId(bdstock,t,1,0); //认沽期权平值主力合约
if not isstock(stock)then continue;
SetSysParam(pn_cycle(),cy);
rt &= select stockid as "标的品种",
bdstock as "标的合约",
stock as "期权主力平值合约",
FormatDateTime("YYYY-MM-DD hh:nn:ss:zzz",["date"])as "datetime",
["open"],
["high"],
["low"],
["close"]
from markettable datekey lt+16/24 to t+16/24 of stock end;
end
return rt;
end
使用范例
范例一:获取商品期权主力平值合约行情
return opMarket(20231214t,20231215t,cy_30m(),"c");
范例二:获取指数期权主力平值合约行情
return opMarket(20231214t,20231215t,cy_30m(),"SH000300");
范例三:获取ETF期权主力平值合约行情
return opMarket(20231214t,20231215t,cy_30m(),"SH510300");