TB_PriceLimit 和 TB_PriceLimit获取期货合约的结算价与涨跌停时,只能用在连续合约不可以用在具体的主力合约上吗?
测试发现在主力合约上面取值是0啊?
Dic<Array<Numeric>> mysettleprice(\"TB_SettlePrice\"); //结算价
Dic<Array<Numeric>> mypricelimit(\"TB_PriceLimit\"); //停板比例
Series<Numeric> myuplimit; //涨停价
Series<Numeric> mydnlimit; //跌停价
Events
OnInit()
{
Range[0:datasourcesize-1]
{
AddDataFlag(Enum_Data_RolloverBackWard());//设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice());//是否映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition());//设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); // 设置忽略换仓信号计算
}
}
onBar(ArrayRef<Integer> indexs)
{
//===========================================================================
//计算涨跌停价格,开平仓价格不能在涨跌停板报单,否则历史信号与实际情况不符。
Numeric myjump=MinMove*pricescale;
If(ExchangeCode==\"CZCE\")
{
myuplimit=RoundUp(mysettleprice[0][0]*(1+0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
mydnlimit=RoundDown(mysettleprice[0][0]*(1-0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
}Else If(ExchangeCode==\"DCE\")
{
myuplimit=RoundDown(mysettleprice[0][0]*(1+0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
mydnlimit=RoundUp(mysettleprice[0][0]*(1-0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
}Else If(ExchangeCode==\"SHFE\")
{
myuplimit=RoundDown(mysettleprice[0][0]*(1+0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
mydnlimit=RoundDown(mysettleprice[0][0]*(1-0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
}Else If(ExchangeCode==\"CFFEX\")
{
myuplimit=RoundDown(mysettleprice[0][0]*(1+0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
mydnlimit=RoundUp(mysettleprice[0][0]*(1-0.01*mypricelimit[0][0])*RollOver/myjump,0)*myjump;
}
If(myuplimit<=mydnlimit) Return;
看了一下只有连续合约才有数据,那么如果需要交易主力合约 ,怎么才能取到这个值呢?或者在交易主力合约时如何避免涨跌停发单?