首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IBrokers和R,检索多个股票的实时交易数据的适当方式是什么?

使用IBrokers和R,检索多个股票的实时交易数据的适当方式是什么?
EN

Stack Overflow用户
提问于 2020-09-01 09:54:24
回答 1查看 211关注 0票数 0

显然,交易员可以很容易地在一个实时交易时段监控100只股票。

下面是检索30+股票代码的实时数据的代码:

代码语言:javascript
复制
tws <- twsConnect()
sym <- c("AAPL", "MSFT", "GOOGL", "TWTR", "MSFT", "BABA","JD", "WLTW", "DIA",
         "QQQ", "VOO", "MOMO","IBB", "VOOG", "VYM","VNQ", "BIDU", "BA",
         "AYX", "ROKU", "UBER","ACB", "CRON", "TTD","BAM", "AZO", "JPM",
         "WMT", "GRUB", "TSN")
contracts <- lapply(sym, function(x) twsEquity(x, 'SMART','ISLAND'))

system.time(
last_prices <-   lapply(contracts, function(x) reqMktData(tws, 
                                                          Contract = x,
                                                          snapshot = TRUE))

)

以下是性能指标:

代码语言:javascript
复制
2 -1 2104 Market data farm connection is OK:usfarm 
2 -1 2106 HMDS data farm connection is OK:ushmds 
2 -1 2158 Sec-def data farm connection is OK:secdefil 
   user  system elapsed 
  0.408   0.367  46.727 
Warning message:
In .Internal(gc(verbose, reset, full)) :
  closing unused connection 6 (->localhost:7496)

这显然是不可接受的。仅为30+股票检索实时数据不应超过40+秒。

使用quantmod::getSymbols,这个操作本质上是即时的。

我做错了什么?

我有一个8核XEON处理器。也是最新的型号之一。不可能是我的硬件。

EN

回答 1

Stack Overflow用户

发布于 2020-09-01 18:17:04

Ibrokers仅是单线程的。这就是为什么有些ibrokers函数会一直运行,直到您中断R会话。这基本上是一个R问题,因为R(目前)是单线程的。您可以通过创建新线程来模拟这一点,因为ib可以处理此问题,但这需要异步语言,而不是R。例如,socketConnection不能处理并行(asych)请求,您需要为每个线程设置一个完整的新连接。这是可能的,但是随后正确地跟踪从ib返回的消息变得更加困难。

reqMktData函数只接受1个滚动条(独立于语言),您需要循环遍历这些滚动条。在其他语言中,这往往也是一个问题,开销,ib服务器的速度,延迟等等,但将其与您使用quantmod进行的yahoo检索进行比较并不完全相同。在ib端有很多检查,比如它是否是一条正确的消息,在显示数据之前,发回的消息需要解码。所有这些都增加了开销。

通常情况下,你会同时请求多达100个报价器的快照( reqMktData = FALSE)的市场数据流,并实时检查数据流的最新价格,但随后你需要使用python、c#或c++ (或java)。此外,您还需要区分不同的报价器,这意味着使用请求或其他识别信息。有关python,请参阅ib_insync库。Info here

有关ib问题的更多信息,请查看twsapi group,了解有关该api的最新错误/问题。R没有太多表示,因为这仍然是在一个非常旧的api版本上。还要检查stackoverflow上的interactive-brokers标签。这也可能会给你一些想法/帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63680283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档