2013-03-21 112 views
5

如何从盈透证券获取指数的历史数据到R?如果是期货,我会用这个命令(这里建议IBrokers request Historical Futures Contract Data?):IBrokers历史指数数据

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

但随着S的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创建一个标签

+1

你从哪里得到conId(“11004968”)?如果您需要标准普尔指数,您需要获得[SPX合约](http://www1.interactivebrokers.ch/contract_info/v3.8/index.php?action=Details&site=GEN&conid=416904)。如果您想使用[twsInstrument](https),您可以使用getContract(“SPX”),getContract(合成(“SPX”,“USD”)),'getContract(“416904” ://r-forge.r-project.org/R/?group_id = 1113),或者当geektrader演示时使用[IBrokers](https://code.google.com/p/ibrokers/)中的'twsIndex'。 – GSee 2013-03-21 12:05:31

回答

5

我没有市场数据访问索引数据,但我认为应该继续工作。

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" 
## 
0

如何对非美国股票一个请求的合同信息,我已经试过正确创建下面的两个电话和我在合同细节中出现错误,但这些是两种证券的符号和交换,我可以在TWS中为他们提取信息。

reqContractDetails(TWS,twsEquity(符号= “BMW”,EXCH = “IBIS”))

reqContractDetails(TWS,twsEquity(符号= “BP”,EXCH = “EBS”))

我甚至用exch ='SMART'进行了试验,但是宝马公司并没有拿到纽约证券交易所的纽约证券交易所。这个电话只针对美国股票吗?

+0

我想通了,你必须指定非美国股票的货币reqContractDetails(tws,twsEquity(symbol =“BMW”,exch =“IBIS”,currency ='EUR')) – Arun 2015-06-08 17:53:39