51 浏览
0

代码:

while True:
    api.wait_update()

    #各种if...

    print(quote.datetime, "//卖一//", quote.ask_price1, "//卖一量//", quote.ask_volume1, "//买一价//",

输出的结果是这样的:

为什么有点时候一秒2喷,有的时候1秒4喷?4喷的时候,后3喷数据基本一致、

chaos 已回答的问题 7小时 前
0

`api.wait_update()` 不是定时器,也不会按照固定的每秒次数返回。它会等待任意一项业务数据发生更新,然后将更新合并到内存对象并返回。

行情、K 线、账户、持仓、委托、成交以及后台任务等任一数据发生变化,都可能使 `wait_update()` 返回;交易所行情本身也是按事件推送的,所以一秒内返回 2 次或 4 次都属于正常现象。

你现在是在每次 `wait_update()` 返回后直接打印 `quote`。如果本次变化来自其他对象,或者只是 `quote` 中未打印的字段发生变化,那么卖一价、卖一量、买一价等字段可能没有变化,看起来就像连续输出了几组相同数据。

可以在打印前使用 `api.is_changing()` 判断:

1. 只想在该行情对象发生变化时打印,就判断整个 `quote`;
2. 只关注买卖盘口,就指定卖一价、卖一量、买一价、买一量等字段;
3. 只想判断行情时间是否变化,就监控 `datetime` 字段。

如果业务要求“最多每秒输出一次”,需要在保持 `wait_update()` 持续运行的同时,另外按照本机时间做输出节流,不要使用 `sleep()` 阻塞更新循环。

chaos 发表新评论 7小时 前

有其他问题欢迎加入官方Q群748265037一起交流

您正在查看1个答案中的1个,单击此处查看所有答案。