2013-03-21 140 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