3.78K 浏览
0

我目前使用get_kline_serial的场景是我不想用wait_update()来控制行情的订阅,而是在我需要的时候取得最新的行情,因为我用api.wait_update()的时候会把我的程序锁住,而不能干别的事情。

我在14:30用get_kline_serial取DCE.i2009的15分钟数据时候先返回了一个最新的时间序列,以14:30结尾,然而我在14:45的时候再次执行get_kline_serial的时候,返回的数据还是以14:30结尾,而不是14:45。

有无办法实现随用随取,在需要的时候让get_kline_serial返回最新的K线时间序列?谢谢!

lookis 已回答的问题 2020年7月22日
1

针对程序锁住可以使用两种办法:

  1. 使用async异步,注册回调,然后只在主循环里 wait_update
  2. wait_update有一个参数是 deadline, 也就是最多等待到什么时候,可以设置一个值来防止一直等待

另外关于你的K线问题,在回测的时候你是可以假定卡点到14:45的时候有新的数据生成,但在实盘中可能有几分钟没有交易,导致没有新的数据,如果卡点卡的特别死的话,甚至可能几秒种没有交易就会出现你遇到的这种情况

所以我们在开发的时候要理解一个大环境就是:数据不是你想有就有的,数据是交易所的,它有,推送给你,你才有。无论是K线,还是position的更新,account的更新等等都是这样,这也是 wait_update 这么设计的原因:“数据是我说有才有,不是你说有才有”

因此,为了让我们的程序更可靠,不至于回测是好的,实盘就踩坑,建议还是一直订阅 wait_update

silly_lamb 发表新评论 2020年7月23日

非常感谢!