1

我认为这是一个 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-04-08 格林威治标准时间 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。

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

4

1 回答 1

0

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

尝试这个:

 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
于 2021-03-29T17:28:13.237 回答