FAQ > 金融建模 > 建模问题 > 期货相关

Q:如何根据指数代码获取对应的期货主力合约等代码    

  • A:我们一般传统的用法是根据品种代码获取相关的合约代码(如对应的基准代码等),常见的可参考:FAQ:Q:期货品种、合约代码与主力线等之间的获取方法
    现需要通过指数代码,得到品种信息,比如通过"SH000300"得到ZLIF10,则我们可以通过下面方式实现:
    注:仅支持股指期货。
    第一步:封装函数,生成指数与期货合约的对照表
    Function getFuturesIndexids(Indexid,bstr); //根据指数代码获取期货主力等代码
    begin
    //Indexid:指数代码,bstr:字段名,如"连二代码"
     spzd:=array("IF","IC","IM","IH");
     pztable:= select *,spec(base(703030),spec(FuturesZL(today()),["主力代码"])) as "基准代码"
        from infotable 708 of spzd end;
     czL:=vselect [bstr] from pztable where ["基准代码"]=Indexid end;
     return czL;
    end

    第二步:调用
    return getFuturesIndexids("SH000300","主力代码");

    返回:ZLIF10
    其中,可选字段可参考708表中的字段:FAQ:Q:期货代码对照表708的使用说明

    其它应用:根据指数代码,获取该股指期货的主力实际合约及其基本信息
    Indexid:="SH000300";
      czL:=getFuturesIndexids(Indexid,"主力代码");
      sjHY:= ZLToFuturesID(czL,20250410t); //得到主力在指定日的实际合约
      return select * from infotable 703 of sjHY end; //取期货合约的基本信息表

    返回: