在我开始在我的屏幕上添加更多符号之前,我还没有遇到过这个问题。我不认为它是一个处理的东西,我的cpu一直很好,而且我还没有做任何超级想象的事情(只是将数据存储到对象并经常写入txt文件)。 / p>
从api的第1天开始,我注意到我必须在while循环中放置一个sleep(1)来不断检查消息,如下所示:
PosixTestClient client;
client.connect( host, port, clientId);
while( client.isConnected()) {
sleep(1);
client.processMessages();
}
如果我不在那里睡觉(1),它就会崩溃。所以我想我的第一个问题是:这是正常的吗?或者这有什么问题?
我的下一个问题是......有关为什么api数据与tws数据相比可能存在延迟的任何提示?我知道有一个滞后因为当数据进入api时,我将它存储到字符串中,然后每分钟将数据写入文本文件。然后我回过头来查看我的文本文件并将它与tws中的图表进行比较......我注意到了大约2分钟的延迟!我还注意到,在交易日的前半个小时之后,当事情非常活跃时,它似乎会变得更好(延迟消失)。
那么......有什么建议吗?
答案 0 :(得分:0)
您订购了Booster pack吗? TWS API有100个引号限制,以及API。您可以额外购买100个报价30美元。
引用助推器 通过购买每包30美元的每月报价助推器包来增加同时报价窗口的限额。
每个助推器包提供100个同时进行的I级报价。 Booster Pack报价是所有来源(包括佣金)的月度报价分配的补充。 Booster包引用可在桌面系统和API中使用。 订阅后,报价立即可用,并在您下次登录系统时显示。 取消的助推器包订阅的数据在当前结算周期结束时仍然可用。 每个帐户限制10个引用Booster包。
答案 1 :(得分:0)
所以...在非常有帮助和友好的雅虎TWS API用户组的帮助下:https://groups.io/g/twsapi/messages
我能够找到答案,这很简单:
减少睡眠时间!在client.proccessMessages()之间没有睡眠的情况下运行它会导致我的cpu运行得非常高,但我需要真正放松cpu只是睡了一个毫秒......不是一秒钟。睡了一整秒导致数据滞后(我怀疑IB会询问数据,然后在调用proccessMessages()时“发送”给你,所以你需要经常调用它来保持领先于tick数据你正在接收!)
对于想要更详细阅读的人,这里是主题:https://groups.io/g/twsapi/topic/4702705#37186
手指越过它继续工作,但今天我获得了100个高音量代码的良好数据,没有滞后:)