除权
通过rollover函数,每根Bar打印出来的除权系数怎么都是1? Params /* 可增加后续交易策略需要的参数 */ Vars Series<Numeric> RealOpen(0,60); //真实合约的开盘价 Series<Numeric> RealHigh(0,60); //真实合约的最高价 Series<Numeric> RealLow(0,60); //真实合约的最低价 Series<Numeric> RealClose; //真实合约的收盘价 Numeric Lots; //交易手数 Global Numeric i; /* 可增加后续交易策略需要的变量 */ Events OnBar(ArrayRef<Integer> indexs) { Range[0:DataCount()-1] { Commentary(Text(Rollover())); //除权换月时刻的换仓处理 If(Rollover<>Rollover[1] And Rollover[1]<>InvalidNumeric) { PlotBool("换月",True); Commentary("原合约收盘价:"+Text(Close[1]/Rollover[1])); Commentary("新合约收盘价:"+Text(Close[1]/Rollover)); lots=Max(1,Round(Abs(CurrentContracts*Rollover/Rollover[1]),IIF(Category==0,-2,0))); If(MarketPosition==1) { Sell(0,Close[1]/Rollover[1],Enum_Signal_UnCorrectPrice); Buy(lots,Close[1]/Rollover,Enum_Signal_UnCorrectPrice); }Else If(MarketPosition==-1) { BuyToCover(0,Close[1]/Rollover[1],Enum_Signal_UnCorrectPrice); SellShort(lots,Close[1]/Rollover,Enum_Signal_UnCorrectPrice); } } //真实价格 If(Rollover<>InvalidNumeric) { RealOpen=Open/Rollover; RealHigh=High/Rollover; RealLow=Low/Rollover; RealClose=Close/Rollover; } Else { RealOpen=Open; RealHigh=High; RealLow=Low; RealClose=Close; } /* 可增加后续交易策略需要的代码 */ PlotKline(RealOpen,RealHigh,RealLow,RealClose); If(MarketPosition<>1) Buy(100,Open/Rollover,Enum_Signal_UnCorrectPrice); } }