请教老师,我这套利程序怎么总警告闪烁!

Params Numeric ziying(3);//止盈点位 Numeric zisun(1);//止损点位 Vars Numeric Offset(1.25); // 布林通道参数 Series<Numeric> MidLine(0); // 布林通道中轨 Series<Numeric> JC(0); // JC Numeric Band(0); Series<Numeric> upBand(0); // 布林通道上轨 Series<Numeric> dnBand(0); // 布林通道下轨 Bool dk; bool dp; Global Numeric num(0); Events OnInit() { SubscribeBar("hc888.SHFE", "1m", 20221123); SubscribeBar("rb888.SHFE", "1m", 20221123); } OnBar(ArrayRef<Integer> indexs) { JC = (data0.close[1]-data1.close[1]); Commentary(" data0.close[1]:"+Text(data0.close[1]) +" data1.close[1]:" +Text(data1.close[1])+ " Jc:"+Text(jc)); // 布林通道中轨 MidLine = Average(jc,50); Band = StandardDev(jc,50,2); // 布林通道上轨 upBand = MidLine + Offset*Band; dnBand = MidLine - Offset*Band; // 画线 PlotNumeric("MidLine",MidLine*45); PlotNumeric("upBand",upBand*45); PlotNumeric("dnBand",dnBand*45); PlotNumeric("JC",JC*45); DK = CrossOver(jc,midline) or JC>JC[1]; If(dk ==true) { If(data0.MarketPosition<>1 ) { data0.buy(1,data0.Open); data1.Sellshort(1,data1.Open); } } num = BarsSinceLastEntry; DP = jc-jc[num]>=ziying Or Jc[num] -JC>zisun; Commentary("dk:"+Text(IIF(dk==true,1,0))+" DP:"+Text(iif(dp==true,1,0))+" Num:"+Text(num)+" 平仓盈亏:"+Text(jc-jc[num])); If(dP ==true ) { data0.Sell(0,data0.Open); data1.BuyToCover(0,data1.Open); } }

数据叠加的情况下,由于两个品种新bar第一tick到来时间可能不一致 所以你就算用[1],也有可能造成闪烁 你可以用bar时间来判断一下,如果驱动两个图层的time不一致,就不进行关键指标的计算,比如jc

回复:哦哦,这是关键。我试试,非常感谢!!

先确定是开仓闪还是平仓闪 然后再检查他们的条件

回复:如果从逻辑上来看,我用的Close[1],是上一根的数据,开仓和平仓都不应该闪。

回复:请教王老师,怎么确定是开仓闪,还是平仓闪?谢谢!!!