【问题标题】:IBrokers Historical Index DataIBrokers 历史指数数据
【发布时间】:2019-03-29 19:03:05
【问题描述】:

如何从 Interactive Brokers 将 INDEX 的历史数据导入 R?如果是期货,我会使用这个命令(这里建议IBrokers request Historical Futures Contract Data?):

library(twsInstrument)
a <- reqHistoricalData(tws, getContract("ESJUN2013"))

但是标普指数的connid对应的指令会报错:

> a <- reqHistoricalData(tws, getContract("11004968"))
Connected with clientId 110.
Contract details request complete. Disconnected.
waiting for TWS reply on ES ....failed.
Warning message:
In errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106,  :
  Error validating request:-'uc' : cause - HMDS Expired Contract Violation:contract can not expire.

附:有足够积分的人应该为 IBrokers 创建一个标签

【问题讨论】:

  • 你从哪里得到的conId ("11004968")?如果你想要标准普尔指数,你需要得到SPX contract。如果您想使用twsInstrument,可以使用getContract("SPX")getContract(synthetic("SPX", "USD"))getContract("416904") 等来执行此操作,或者使用IBrokers 中的twsIndex,如geektrader 演示的那样。

标签: r ibrokers


【解决方案1】:

我没有市场数据访问索引数据的权限,但我认为以下应该可行。

reqHistoricalData(tws, twsIndex(symbol = "SPX", exch = "CBOE"))
## waiting for TWS reply on SPX ....failed.
## NULL

## Warning message:
## In errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106,  :
##  Historical Market Data Service error message:No market data permissions for CBOE IND

以下是reqContractDetails使用与上面类似的方法的结果,证明合约对象是由twsIndex正确创建的

reqContractDetails(tws, twsIndex(symbol = "SPX", exch = "CBOE"))
## [[1]]
## List of 18
##  $ version       : chr "8"
##  $ contract      :List of 16
##   ..$ conId          : chr "416904"
##   ..$ symbol         : chr "SPX"
##   ..$ sectype        : chr "IND"
##   ..$ exch           : chr "CBOE"
##   ..$ primary        : chr ""
##   ..$ expiry         : chr ""
##   ..$ strike         : chr "0"
##   ..$ currency       : chr "USD"
##   ..$ right          : chr ""
##   ..$ local          : chr "SPX"
##   ..$ multiplier     : chr ""
##   ..$ combo_legs_desc: chr ""
##   ..$ comboleg       : chr ""
##   ..$ include_expired: chr ""
##   ..$ secIdType      : chr ""
##   ..$ secId          : chr ""
##   ..- attr(*, "class")= chr "twsContract"
##  $ marketName    : chr "SPX"
##  $ tradingClass  : chr "SPX"
##  $ conId         : chr "416904"
##  $ minTick       : chr "0.01"
##  $ orderTypes    : chr [1:22] "ACTIVETIM" "ADJUST" "ALERT" "ALLOC" ...
##  $ validExchanges: chr "CBOE"
##  $ priceMagnifier: chr "1"
##  $ underConId    : chr "0"
##  $ longName      : chr "S&P 500 Stock Index"
##  $ contractMonth : chr ""
##  $ industry      : chr "Indices"
##  $ category      : chr "Broad Range Equity Index"
##  $ subcategory   : chr "*"
##  $ timeZoneId    : chr "CST"
##  $ tradingHours  : chr "20130321:0830-1500;20130322:0830-1500"
##  $ liquidHours   : chr "20130321:0830-1500;20130322:0830-1500"
## 

【讨论】:

    【解决方案2】:

    如何请求非美国股票的合约信息,我尝试了下面的两个调用,我在合约详细信息中收到错误,但这些是两种证券的符号和交换,我可以在 TWS 中为它们提取信息.

    reqContractDetails(tws, twsEquity(symbol = "BMW", exch = "IBIS"))

    reqContractDetails(tws, twsEquity(symbol = "BP", exch = "EBS"))

    我什至尝试使用 exch='SMART' 但它对 BMW 失败并为 BP 获取 NYSE 行。这个电话只针对美股吗?

    【讨论】:

    • 我想通了,你必须为非美股指定货币 reqContractDetails(tws, twsEquity(symbol = "BMW", exch = "IBIS",currency='EUR'))跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2022-01-18
    相关资源
    最近更新 更多