【信号闪烁】数组的处理来记录涨跌幅,买涨幅最高、卖涨幅最低。帮忙分析处理为什么出现信号闪烁(附件:策略单元、图片、源码);请告知问题所在,发送修改后的代码。谢谢

参考课程链接: TBQuant简单数组应用20190613 https://www.tbquant.net/train/150.html 策略单元/源码无法上传附件...(如果需要发策略单元,请告知一声,QQ或者邮件发送) 策略单元, 2000根日线 品种:ru000 rb000 cu000 ta000 (测试时间 2022年12月3日18:23:04) 【信号闪烁 信息】 时间 消息类型 消息级别 内容 2022-12-03 18:14:57.610 策略运行 警告 图表交易,图表-测试@K线@1发生信号闪烁,合约:TA000.CZCE,上次执行信号个数:2,本次执行信号个数:0,发生Bar时间:20141223.000000,发生Bar=65 源码: Params //此处添加参数 Numeric lots(1); Vars //此处添加变量 Numeric i; Global Integer r; // 图层遍历 Global Array<Numeric> arr1; Global Array<Integer> id1; Global Array<Numeric> arr2; Global Array<Integer> id2; Events //此处实现事件函数 //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { For i = 0 To DataCount() - 1 { // arr1[i] = Data[i].Close[1]; arr1[i] = (Data[i].Close[1] - Data[i].Open[1]) / Data[i].Close[1] * 100; id1[i] = i; } Na1Sort2(arr1, id1, 0, (DataCount()-1), False); Commentary(Text(CurrentBar())); For i = 0 To DataCount() - 1 { Commentary("图层[" + Text(i) + "]涨跌系数 = " + Text(Round(arr1[i], 2))); Commentary("下标[" + Text(i) + "] = " + Text(id1[i])); } If(Weekday == 1) { Range[r=0 : DataCount-1] { Commentary("range: " + Text(r)); If(id1[0] == r ) { If(MarketPosition <> 1) { Buy(lots, Open); } } Else If(id1[DataCount-1] == r ) { If(MarketPosition <> -1) { SellShort(lots, Open); } } Else { Sell(0, Open); BuyToCover(0, Open); } } } } 策略单元示意:

【信号闪烁 信息】 时间 消息类型 消息级别 内容 2022-12-03 18:14:57.610 策略运行 警告 图表交易,图表-测试@K线@1发生信号闪烁,合约:TA000.CZCE,上次执行信号个数:2,本次执行信号个数:0,发生Bar时间:20141223.000000,发生Bar=65