指数与期货价格共同联动的问题
先说一下策略的思路:在现货指数突破某个价位时,对应的期货实时发单,下面是核心代码: var Global Numeric BuyLine; //全局变量,触发的临界值,用现货指数计算 OnInit() { Range[0:DataCount-1] { //=========数据源相关设置============== AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 } } OnBar(ArrayRef<Integer> indexs) { Range[0:0] //现货指数图层 { ...........................此处省略代码 BuyLine = Open[0] + Ks_temp*R } Range[2:2] //期货指数图层 { If(data0.High > BuyLine and MarketPosition==0) { Buy(lot,max(open,buyline));//我在此处假设期货的价格与现货不会有太大的升贴水,让期货以buyline的价格买入。 //Commentary(\"RealOpen=\" + Text(RealOpen) + \" Buyline=\" + Text(BuyLine)); data1.PlotString(\"Buy\",\"多\",low,red); } }回到策略的思路:在现货指数突破某个价位时,对应的期货实时发单。我假设期货的价格与现货不会有太大的升贴水,当现货价格突破buyline时,因为期货价格无法确定,所以让期货以buyline的价格买入进行回测。但回测时发现,由于后复权的原因,导致期货的open价格总是大于buyline,这样max(open,buyline)执行的结果就是总是以期货K线的open价格买入,而不是突破价,这就导致了偷价情况的发生,回测结果严重偏高!该怎么实现较真实的回测效果呢,求各位老师指导!