A:可以先通过FAQ:
期货品种代码对照表获取到对应的主力、次主力代码,再通过模型FAQ:
ZLToFuturesID获取指定日的实际合约。
示例一:提取一段时间内指定期货品种主力、次主力等代码对应的实际合约
pz:="AL";
begt:=20260401T;
endt:=20260420T;
//期货品种对应的主力、次主力等代码
codes:=spec(array(base(708004),base(708011),base(708007),base(708008)),pz);
//根据主力合约,提取交易日序列
dayList:=spec(StockTradeDayQk(begt,endt),codes[0]);
ret:=array();
for i,day in dayList do
begin
ret[i]:=array(
"品种":pz,
"日期":datetostr(day),
"主力":ZLToFuturesID(codes[0],day),
"次主力":ZLToFuturesID(codes[1],day),
"连一":ZLToFuturesID(codes[2],day),
"连二":ZLToFuturesID(codes[3],day),
);
end
return ret;
示例二:提取一段时间内指定期货品种708表中所有对应代码的实际合约
pz:="AL";
begt:=20260401T;
endt:=20260420T;
//期货品种对应的主力、次主力等代码
codes:=select ["主力代码"],
["主力代码2"],
["次主力代码"],
["连续代码"],
["连一代码"],
["连二代码"],
["连三代码"],
["连四代码"] from infotable 708 of pz end;
//根据主力合约,提取交易日序列
dayList:=spec(StockTradeDayQk(begt,endt),codes[0,"主力代码"]);
cols:=mCols(codes,1);
ret:=array();
for i,day in dayList do
begin
ret[i,"品种"]:=pz;
ret[i,"日期"]:=datetostr(day);
for j,col in cols do
begin
ret[i,col]:=codes[0,col]?ZLToFuturesID(codes[0,col],day):nil;
end
end
return ret;
