通过series储存的数据存在滞后的现象

Vars //此处添加变量 global numeric direct_sum; global numeric series_sum; series <numeric> bid_price; tick call_contract_tick; //存放call的tick数据 Defs //此处添加公式函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { PrintClear; SubscribeBar("ag2605C18000.SHFE", Frequency(), BeginDateTime()); } OnBar(ArrayRef<Integer> indexs) { gettick("ag2605C18000.SHFE",call_contract_tick); if (BarStatus==2) { print("------------"+TimeToString(time)+"------------"); print("买一价:"+text(call_contract_tick.bidask1.bidP)); //直接显示data1的买一价 bid_price=call_contract_tick.bidask1.bidP; //通过series变量记录data1的买一价后,再进行显示 print("bid_price:"+text(bid_price)); direct_sum=direct_sum+call_contract_tick.bidask1.bidP; //直接计算买一价的累计值 series_sum=series_sum+bid_price; //通过series变量bid_price记录买一价后,再进行累计 print("direct_sum:"+text(direct_sum)); //正常情况下,direct_sum应该等于series_sum;但实际发现经过一段时间后,二者会不相等,表明通过series记录的数据存在一些问题 print("series_sum:"+text(series_sum)); } } 我发现通过series储存的高频数据,存在一定的滞后现象参考以上demo,data0加载为ag2605的tick数据插入以上demo的代码按理来说,不论何时,通过[直接求和的direct_sum]都应该等于[通过series数据求和的series_sum]但实际上,在程序进行一段时间后,二者会不相等查看控制台也会发现series储存的bid_price会不等于其原始数据的现象是否是是程序存在问题?能否修正一下?

建议先把零基础课程里关于数据结构相关的内容看一遍对series类型的理解好像完全取决于自己的想象

回复:零基础课程早就学过了,代码也写过几万行了那您说说这里代码有什么问题🤝

回复:要不你先说说你是怎么跑出来不等于这个现象的吧我是完全复现不出来。看你的截图,你这也就跑了70个tick不到对吧我这都跑了600多个tick了,也没发现不一样啊?

回复:你用tick级数据,不要用5分钟

回复:data0加载的ag2605的时间周期选tick

回复:你看这里

回复:您好,是确实有问题吧

回复:你使用有问题你获取的是data1图层的数据,那这里就应该用data1图层的series进行保存。因为期货和期权图层叠加,数据不一定是同时到的。如果d0tick先到数据驱动以后可能读的是d1图层前一根的tick,那两i版就对不上了