基础数据

TB_SettlePrice - 期货结算价:仅有主力合约的结算价,没有具体单个合约的结算价。是这样设计的吗?期货结算价是盘后更新的(15点15分),意味着当天(盘中)获取的结算价是前一天的结算价。这就导致了在主力换月的时候,换月第一天的888合约(盘中)结算价是这个具体合约昨天的结算价,而这个具体合约昨天并不是主力合约,这就导致了在基础数据中TB_SettlePrice的取值在换月第一天不正确。请看加载下面的代码验证,TBQ版本1.3.8.6。Vars Dic<Array<String>> MyRollover(TB_ROLLOVER_v2); // 0. 期货换月合约; 1. 期货换月前价格; 2. 期货换月后价格 Dic<Array<Numeric>> MyRolloverCoef(TB_ROLLOVER_COEF); // 0. 前复权系数; 1. 后复权系数 Dic<Array<Numeric>> MySettlePrice(TB_SettlePrice); // 0. 结算价 Events OnBar(ArrayRef<Integer> indexs) { Commentary(合约名称= +MyRollover[0][0]); Commentary(换月前价格= +MyRollover[0][1]); Commentary(换月后价格= +MyRollover[0][2]); Commentary(后复权系数= +Text(MyRolloverCoef[0][1])); If(MyRollover[0][0]<>MyRollover[1][0]) // 如果今天和昨天的合约名称不同,则表示换月了; { PlotString(换月前合约名称,Left(MyRollover[1][0],5),High[1]+15,Green,1); PlotString(换月后合约名称,Left(MyRollover[0][0],5),High+15,Green); } // 后移一位显示昨日对应价位昨日结算价 PlotAuto(结算价画线,MySettlePrice[0][0],0,Yellow,Enum_Dot,Enum_Solid,Enum_5Pix,1); PlotString(结算价数值,Text(MySettlePrice[0][0]),MySettlePrice[0][0],White,1); }

收到