这是update_tick的源代码
这段代码里最让我困惑的是,只要有一个品种的 tick的 tick.datetime.minute != self.last_dt_minute,就会触发self.on_bars()
可是问题是投资组合中不是只有一个品种啊!!!
如果有多个品种,而vnpy接收到这些tick的时间有毫秒的差别(郑商所的毫秒时间本来就和大商所、上期所不一样)
那么,vnpy会在检测到第一个品种的tick 符合条件时,就直接调用self.on_bars()!!!!
如果此时on_bars计算的时间长一些,例如碰上固定的交易时间了,需要计算策略了,需要调用update_bar_hour_window了,需要send_order了,那么此时on_bars还没计算完。但此时过了200ms,另外一个品种的tick发过来了,它将又要调用self.on_bars() !!!! (因为上个品种的on_bars还没调用完, self.last_dt是在on_bars调用完后面才修改的)
这岂不是在很短的时间内就要对策略进行两次计算吗??