套利交易OpenBarOpen信号闪烁
老师好,我做期货跨期套利。我的价差模型是用时序Open价计算得出的,所以我的开仓价也用Open价。我的策略写在OnBarOpen里面,下面是我的策略代码。按理说Openbaropen在每一根bar启动后执行一次,就能获取当根bar的Open价。我的价差模型diff= Data0.Open-1.11*Data1.Open;应该是在当根bar里面始终都不会变,也就是后面都不会闪烁。但是我在图表里看到diff值在当根bar开始出现时时一个值,很快值又变了,然后再一直保持不变,直到下一根bar又是这样。也就是每根bar我的价差diff都变了一次,这就发生了闪烁。请问这是什么原因。OnInit() { SubscribeBar(\"p9888.DCE\",\"1m\",20220101,0);//棕榈主力 SubscribeBar(\"p9777.DCE\",\"1m\",20220101,0);//棕榈次主力 Range[0:DataCount-1] { SetOrderPriceOffset(0); SetSlippage(Enum_Rate_PointPerHand,0); AddDataFlag(Enum_Data_AutoSwapPosition()); AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); SetOrderMap2MainSymbol(); //设置委托映射到主力 SetOrderMap2SecondMainSymbol();//设置委托映射到次主力 } } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBarOpen(ArrayRef<Integer> indexs) { If(CurrentBar<Boll) Return; diff = Data0.Open-1.11*Data1.Open; PlotNumeric(\"diff\",diff,0,White); mb = AverageFC(diff,Boll); PlotNumeric(\"mb\",mb,0,Yellow); dev = StandardDev(diff,Boll,1); up = mb+2*dev; PlotNumeric(\"up\",up,0,Green); closeup = mb+1*dev; PlotNumeric(\"closeup\",closeup,0,Blue); closedn = mb-1*dev; PlotNumeric(\"closedn\",closedn,0,Blue); dn = mb-2*dev; PlotNumeric(\"dn\",dn,0,Green); //做空价差 If(diff>=up And diff<stopup And diff[1]<up[1] And Data0.MarketPosition==0 And Data1.MarketPosition==0) { Data0.SellShort(d0_size,Open); Data1.Buy(d1_size,Open); } //平仓做空价差 If(diff<=closeup And diff[1]>closeup[1] And Data0.MarketPosition<0 And Data1.MarketPosition>0) { Data0.BuyToCover(d0_size,Open); Data1.Sell(d1_size,Open); } //做多价差 If(diff<=dn And diff>stopdn And diff[1]>dn[1] And Data0.MarketPosition==0 And Data1.MarketPosition==0) { Data0.Buy(d0_size,Open); Data1.SellShort(d1_size,Open); } //平仓做多价差 If(diff>=closedn And diff[1]<closedn[1] And Data0.MarketPosition>0 And Data1.MarketPosition<0) { Data0.Sell(d0_size,Open); Data1.BuyToCover(d1_size,Open); } }