0

在我开始在屏幕上放置更多符号之前,我一直没有遇到这个问题。我不认为这是一个处理问题,我的 cpu 一直很好,而且我没有做任何超级花哨的事情(只是将数据存储到对象并经常写入 txt 文件)。

从使用 api 的第一天开始,我注意到我必须在 while 循环中放置一个 sleep(1) 来不断检查消息,如下所示:

PosixTestClient client;
client.connect( host, port, clientId);  
while( client.isConnected()) {
        sleep(1);
        client.processMessages();
    }

如果我没有那个 sleep(1) ,它就会崩溃。所以我想我的第一个问题是:这正常吗?或者有什么问题吗?

我的下一个问题是......关于为什么 api 数据与 tws 数据相比可能存在滞后的任何提示?我知道存在滞后,因为当数据进入 api 时,我将其存储到字符串中,然后每分钟将数据写入文本文件。然后我回顾我的文本文件并将其与 tws 中的图表进行比较......我注意到大约有 2 分钟的延迟!我还注意到在交易日的前半个小时之后,情况似乎变得更好(滞后消失),当时情况非常活跃。

所以……有什么建议吗?

4

2 回答 2

1

你有订阅助推器包吗?TWS API 有 100 个报价限制,还有 API。您可以花 30 美元购买额外的 100 个报价。

Quote Booster 通过以每包 30.00 美元购买每月 Quote Booster 包来增加同时报价窗口的限额。

每个补充包提供 100 条同步一级报价。Booster Pack 报价是您从所有来源(包括佣金)获得的每月报价配额之外的附加报价。助推器包报价可用于桌面系统和 API。订阅后,报价立即可用,并将在您下次登录系统时显示。在当前计费周期结束之前,来自已取消补充包订阅的数据仍然可用。每个帐户限制 10 个报价助推器包。

于 2017-03-31T20:27:57.193 回答
1

所以......在非常有用和友好的雅虎 TWS API 用户组的帮助下:https ://groups.io/g/twsapi/messages

我能够找到答案,这很简单:

减少睡眠时间!在 client.proccessMessages() 之间没有睡眠的情况下运行它会导致我的 cpu 运行得相当高,但我真正放松 cpu 所需要的只是睡眠一毫秒......而不是一整秒。睡一秒钟会导致数据滞后(我怀疑 IB 查询数据,然后在您调用 proccessMessages() 时将其“发送”给您,因此您需要经常调用它以保持领先于您的刻度数据正在接收!)

对于任何想要更详细地阅读它的人,这里是线程:https ://groups.io/g/twsapi/topic/4702705#37186

手指交叉它继续工作,但今天我得到了 100 个大容量股票的良好数据,没有滞后:)

于 2017-03-31T22:55:11.177 回答