使用 tbpy 编写策略,Strategy 中的所有事件方法在同一个线程中执行,如果在事件方法(包括定时器方法)中有稍微耗时的操作(100毫秒以内),会导致后续的 on_bar 和 on_tick 行情推送会逐渐延迟,也就是在 on_bar() 和 on_tick() 中接收到的行情是几秒钟、几分钟以前的(延迟时间越来越大)。单个合约的bar/tick订阅,原本在 on_bar 和 on_tick 大约 0.5 秒会推送一次,随着由于事件方法中的耗时操作导致的行情延迟推送,on_bar 和 on_tick 的推送频率也会变慢(2~3秒钟才会推一次,而且推的行情是几分钟、甚至十几分钟以前的)。
这个问题希望能够优化,否则 tbpy 没法用。
搞错了吧,你输出一下每次事件域开始和结束的时间应该就知道了。
行情推送是不会有延时的,tbq内部和py接口都是同步的
就是通过在 on_bar() 和 on_tick() 方法中打印行情日志才看到行情延迟的,比如 on_tick() 中的 Tick.time 是当前时刻前几秒、前几分钟、前10几分钟的。
tbq内部和py接口行情同步没有问题,问题是tbpy内部处理行情回调的逻辑有问题。运行时间短看不出问题,运行几个小时后,延迟问题就越来越严重。
这个不是行情延迟,是函数执行过慢造成的行情积压。
這麽嚴重啊