当使用100个符号时,互动经纪人api落后于tws

时间:2017-03-30 15:26:44

标签: c++ interactive-brokers

在我开始在我的屏幕上添加更多符号之前,我还没有遇到过这个问题。我不认为它是一个处理的东西,我的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分钟的延迟!我还注意到,在交易日的前半个小时之后,当事情非常活跃时,它似乎会变得更好(延迟消失)。

那么......有什么建议吗?

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个高音量代码的良好数据,没有滞后:)