引擎刚启动时,生成两个(假设两个合约套利)LegData分别为LegData1、LegData2,都默认bid_volume和ask_volume=0。
    当时刻  t  传来两个合约的tick数据时,按顺序LegData1先更新bid_volume和ask_volume,LegData2不更新,bid_volume和ask_volume依旧=0,然后spread计算价差,spread会判断是否计算价差,因为LegData2的bid_volume和ask_volume都为0,不计算价差返回,然后LegData2更新bid_volume和ask_volume,spread再计算价差,因为LegData1和LegData2都更新了数据,时刻 t  的价差计算成功。
    当时刻  t +1 传来两个合约的tick数据时,按顺序LegData1先更新bid_volume和ask_volume,然后spread计算价差,但不会等到LegData2更新了再计算,因为LegData1和LegData2的bid_volume和ask_volume都有数据,并不为0,此时时刻 t+1 的价差计算成功,会发现 t+1 的价差其实是采用LegData1的 t+1 时刻数据与 LegData2的 t 时刻数据计算的,等LegData2更新数据后又会计算真正的 t+1 时刻的价差,这样就会推送很多时间错位的价差数据

    **我的问题是:这种计算是否合理,产生的误差对实际会不会有影响?**

    可以消除这种误差吗?我想到的是在spread计算价差时判断各条腿的时间戳是否相同,相同才计算价差,但这样又会有新问题:不太活跃的合约,盘口和成交量不变,交易所不会每秒都发tick数据,可能隔好几秒才发,这样活跃腿可能永远也等不到和自己相同时间戳的不活跃腿,那不相等的这段时间就不会有价差数据产生