盈透证券API在使用100个交易品种时落后于TWS
interactive brokers api lagging behind tws when using 100 symbols
直到我开始在我的尖叫声上放置更多符号之前,我一直没有遇到这个问题。 我不认为这是一个处理问题,我的 cpu 一直很好,无论如何我都没有做任何超级花哨的事情(只是将数据存储到对象并经常写入 txt 文件)。
从使用 API 的第一天起,我注意到我必须在 while 循环中放置一个 sleep(1),以不断检查消息,如下所示:
PosixTestClient client;
client.connect( host, port, clientId);
while( client.isConnected()) {
sleep(1);
client.processMessages();
}
如果我那里没有睡眠(1),它就会崩溃。 所以我想我的第一个问题是:这正常吗? 还是有什么问题?
我的下一个问题是...关于为什么与TWS数据相比,API数据可能存在滞后的任何提示? 我知道存在滞后,因为当数据进入 API 时,我会将其存储为字符串,然后每分钟将数据写入文本文件。 然后我返回我的文本文件并将其与 tws 中的图表进行比较......我注意到大约有 2 分钟的滞后! 我还注意到,在交易日的前半小时之后,当事情非常活跃时,它似乎变得更好(滞后消失了)。
那么......有什么建议吗?
你订阅了补充包吗? TWS API和API一样有100个引号的限制。您可以以 100 美元的价格购买额外的 30 个报价。
报价助推器 通过以每包 30.00 美元的价格购买每月报价补充包,增加同时报价窗口的限额。
每个补充包同时提供 100 个 I 级报价。补充包报价是您每月报价分配的附加内容,来自所有来源,包括佣金。 补充包报价可用于桌面系统和 API。 订阅后,报价立即可用,并将在您下次登录系统时显示。 取消的补充包订阅的数据在当前计费周期结束时仍然可用。 每个账户最多只能获得 10 个报价补充包。
所以... 在非常有帮助和友好的雅虎TWS API用户组的帮助下: https://groups.io/g/twsapi/messages
我能够找到答案,很简单:
减少睡眠时间! 在客户端之间没有睡眠的情况下运行它.proccessMessages() 会导致我的 CPU 运行得相当高,但我真正放松 CPU 所需要的只是睡一毫秒......不是整整一秒钟。 睡眠整整一秒钟会导致数据滞后(我怀疑 IB 会查询数据,然后在您调用 proccessMessages() 时将其"发送"给您,因此您需要足够频繁地调用它以保持领先于您收到的即时报价数据!
对于任何想要更详细地阅读它的人来说,这里是线程:https://groups.io/g/twsapi/topic/4702705#37186
手指交叉,它继续工作,但今天我得到了 100 个高交易量股票代码的良好数据,没有滞后:)
- 确认在TWS c ++ API中至关重要吗?
- Metatrader 5 向导无法识别我的自定义交易信号模块
- 皮克斯美元LNK2019:未解析的外部交易品种
- 如何在 python 交易模型中创建功能时间条件
- 在descructor指针中传递的交易
- 如果关闭娱乐后()所有内存都会被交易,则如何打印输出
- 将数据预加载到RAM中进行快速交易
- MT4交易平台API管理器 - 获取每组证券
- 涉及继承,指针对象的交易以及何时进行的问题
- 盈透证券API在使用100个交易品种时落后于TWS
- 将自我从目标C转移到C ,不再是交易
- 用原子索引从静音阵列中锁定互斥品
- 清除任何交易
- 结构C 的内存分配和交易
- 在两天之间获取交易天数
- 如果功能永远不会终止,则记忆的交易单位
- 为什么我的交易没有回滚?Qt Mysql odbc driver.
- 如何通过分配和交易失配解决此错误
- 如何检查我们是否在SQLite中进行交易
- 范围之后的交易结束