【问题标题】:IBrokers R API and same day intraday pricesIBrokers R API 和当日盘中价格
【发布时间】:2023-11-16 06:35:01
【问题描述】:

我认为这是一个 IB API,而不是 IBrokers R 包。 我正在使用reqHistoricalData 获取 30 分钟的盘中历史数据。市场开盘了,我没有得到当天的数据。我只得到昨天的数据。

是否可以获得当天的盘中柱数据? 这是我正在使用的代码,它只提供前一天的数据,而不是同一天。

library(tidyverse)
library(IBrokers)
tws = twsConnect()
contract <- twsEquity('VOD','SMART')
VOD_intraday = IBrokers::reqHistoricalData(tws, Contract = contract, endDateTime = "20210408 13:24:28", barSize = "1 min", duration = "1 D")
VOD_intraday %>% as.data.frame() %>% rownames_to_column(var = "time") %>% arrange(desc(time)) %>% head()

2021 年 4 月 8 日格林威治标准时间 13:27,伦敦开放。这是响应 - 它仅提供 2020-04-07 的数据:

> contract <- twsEquity('VOD','SMART')
> VOD_intraday = IBrokers::reqHistoricalData(tws, Contract = contract, endDateTime = "20210408 13:24:28", barSize = "1 min", duration = "1 D")
waiting for TWS reply on VOD .... done.
> VOD_intraday %>% as.data.frame() %>% rownames_to_column(var = "time") %>% arrange(desc(time)) %>% head()
                 time VOD.Open VOD.High VOD.Low VOD.Close VOD.Volume VOD.WAP VOD.hasGaps VOD.Count
1 2021-04-07 20:59:00    18.96    18.98   18.95     18.98       1131  18.958           0       265
2 2021-04-07 20:58:00    18.96    18.96   18.95     18.96         90  18.957           0        42
3 2021-04-07 20:57:00    18.96    18.97   18.95     18.95        258  18.960           0        72
4 2021-04-07 20:56:00    18.96    18.96   18.95     18.95        124  18.959           0        58
5 2021-04-07 20:55:00    18.96    18.96   18.95     18.96         56  18.958           0        34
6 2021-04-07 20:54:00    18.95    18.96   18.95     18.95         26  18.951           0        12

在美国市场开放时,您可以使用 SPY、MSFT 或任何美国证券来代替 VOD。

编辑:事实证明,您需要实时订阅才能获得当日数据。下面的答案有效。

【问题讨论】:

  • 是的,我以 1 分钟的间隔获取今天的盘中历史数据。你能分享你传递给 reqHistoricalData 调用的参数吗?
  • 嗨@SNovogoratz:我编辑了回复。你能测试一下,看看你是否得到相同的结果?

标签: interactive-brokers ibrokers


【解决方案1】:

必须指定结束时间,或将其留空以获取可用的最新数据。

试试这个:

 VOD_intraday = IBrokers::reqHistoricalData(tws, Contract = contract, endTime = "", barSize = "1 min", duration = "1 D")

这是我运行时的执行情况:

> library(tidyverse)
> library(IBrokers)
IBrokers version 0.9-10.  Implementing API Version 9.64

IBrokers comes with NO WARRANTY.  Not intended for production use!


See ?IBrokers for details.
> tws = twsConnect()
> contract <- twsEquity('SPY','SMART')
> VOD_intraday = IBrokers::reqHistoricalData(tws, Contract = contract,     endDateTime = "", barSize = "1 min", duration = "1 D")
waiting for TWS reply on SPY ........... done.
> head(VOD_intraday)
                    SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.WAP  SPY.hasGaps SPY.Count
2021-04-08 07:30:00   407.93   407.98  407.68    407.80       5042 407.846           0      1709
2021-04-08 07:31:00   407.81   408.00  407.74    407.98       1615 407.844           0      1065
2021-04-08 07:32:00   407.99   408.05  407.81    407.90       2451 407.932           0      1560
2021-04-08 07:33:00   407.89   407.98  407.88    407.95       2353 407.932           0      1300
2021-04-08 07:34:00   407.95   407.97  407.81    407.81       1708 407.907           0      1012
2021-04-08 07:35:00   407.82   407.86  407.61    407.67       2729 407.726           0      1458

对于符号 VOD:

> contract <- twsEquity('VOD','SMART')
> VOD_intraday = IBrokers::reqHistoricalData(tws, Contract = contract, endDateTime = "", barSize = "1 min", duration = "1 D")
waiting for TWS reply on VOD .... done.
> head(VOD_intraday)
                    VOD.Open VOD.High VOD.Low VOD.Close VOD.Volume VOD.WAP VOD.hasGaps VOD.Count
2021-04-08 07:30:00    18.95    18.95   18.91     18.92        246  18.921           0        49
2021-04-08 07:31:00    18.91    18.91   18.90     18.90         69  18.905           0        31
2021-04-08 07:32:00    18.90    18.90   18.87     18.87        237  18.881           0        44
2021-04-08 07:33:00    18.87    18.87   18.86     18.87         45  18.870           0        20
2021-04-08 07:34:00    18.87    18.87   18.85     18.86        173  18.860           0        57
2021-04-08 07:35:00    18.86    18.87   18.85     18.86         39  18.859           0        19

【讨论】:

  • 我编辑了上面的内容。我添加了endDateTime = "20210408 13:24:28",它仍然显示前一天2021-04-07的数据。
  • 事实证明,您需要实时订阅才能获取当日数据。谢谢你的回答。
  • 很高兴您能够解决它。在试图弄清楚需要什么时,IB 对其数据订阅的描述往往不够。顺便说一句,您的代码是数据检索的绝佳示例。
  • 顺便说一句,任何实时子工作。您可以获得比初选便宜的 MTF 捆绑包。