IBrokers要求历史期货合约数据?

时间:2011-09-27 17:43:49

标签: r ibrokers

我试图请求历史期货数据,但对于初学者来说,ibrokers.pdf文档记录不充分。 例子Gold Miny Contract Dec11 NYSELIFFE:

goldminy<-twsFuture("YG","NYSELIFFE","201112",multiplier="33.2")
reqHistoricalData(conn,
Contract= "goldminy",
endDateTime"",
barSize = "1 S",
duration = "1 D",
useRTH = "0",
whatToShow = "TRADES","BID", "ASK", "BID_ASK",
timeFormat = "1",
tzone = "",
verbose = TRUE,
tickerId = "1",
eventHistoricalData,
file)

我也不知道如何正确指定一些数据参数?

whatToShow?我需要Date,Time,BidSize,Bid,Ask,AskSize,Last,LastSize,Volume

tickerID?

eventHistoricalData?

档案?

1 个答案:

答案 0 :(得分:7)

我写了twsInstrument包(on RForge)来缓解这些令人头疼的问题。 如果你给它任何合理的东西,getContract会为你找到合同。任何这些格式都应该有效:
“YG_Z1”,“YG_Z11”,“YGZ1”,“YGZ11”,“YGZ2011”,“YGDEC2011”,“YG_DEC2011”等。(也可以使用conId,或者给它一个仪器对象,或者仪器对象的名称)

> library(twsInstrument)
> goldminy <- getContract("YG_Z1")
Connected with clientId 100.
Contract details request complete. Disconnected.
> goldminy
List of 16
 $ conId          : chr "42334455"
 $ symbol         : chr "YG"
 $ sectype        : chr "FUT"
 $ exch           : chr "NYSELIFFE"
 $ primary        : chr ""
 $ expiry         : chr "20111228"
 $ strike         : chr "0"
 $ currency       : chr "USD"
 $ right          : chr ""
 $ local          : chr "YG   DEC 11"
 $ multiplier     : chr "33.2"
 $ combo_legs_desc: chr ""
 $ comboleg       : chr ""
 $ include_expired: chr "0"
 $ secIdType      : chr ""
 $ secId          : chr ""

我没有订阅NYSELIFFE的市场数据,所以我将使用2011年12月的e-mini S&amp; P未来来解决其余问题。

可以获取此类历史数据

tws <- twsConnect()
hist.data <- reqHistoricalData(tws, getContract("ES_Z1"))

这将返回这些列,它们都将是“TRADES”数据

> colnames(hist.data)
[1] "ESZ1.Open"    "ESZ1.High"    "ESZ1.Low"     "ESZ1.Close"   "ESZ1.Volume" 
[6] "ESZ1.WAP"     "ESZ1.hasGaps" "ESZ1.Count"  

whatToShow必须是'TRADES','BID','ASK'或'BID_ASK'之一。如果您的请求使用whatToShow ='BID',那么您将获得BID价格的OHLC等。 “BID_ASK”表示卖价将用于高价,买价将用于低价。

由于您说插图太过高级,因此需要重复的是,Interactive Brokers每60秒将历史数据请求限制为6。所以你应该在每个请求之间暂停10秒(或者为了获取大量数据,我通常在发出3个请求后暂停30秒,这样如果我有BID数据,我也可能有ASK数据)

函数getBAT将下载BID,ASK和TRADES数据,并将这些数据的结束值合并为一个xts对象,如下所示:

> getBAT("ES_Z1")
Connected with clientId 120.
waiting for TWS reply on ES ............. done.
Pausing 10 seconds between requests ...
waiting for TWS reply on ES .... done.
Pausing 10 seconds between requests ...
waiting for TWS reply on ES .... done.
Pausing 10 seconds between requests ...
Disconnecting ... 
[1] "ES_Z1"
> tail(ES_Z1)
                    ES.Bid.Price ES.Ask.Price ES.Trade.Price ES.Mid.Price
2011-09-27 15:09:00      1170.25      1170.50        1170.50     1170.375
2011-09-27 15:10:00      1170.50      1170.75        1170.50     1170.625
2011-09-27 15:11:00      1171.25      1171.50        1171.25     1171.375
2011-09-27 15:12:00      1171.50      1171.75        1171.50     1171.625
2011-09-27 15:13:00      1171.25      1171.50        1171.25     1171.375
2011-09-27 15:14:00      1169.75      1170.00        1170.00     1169.875
                    ES.Volume
2011-09-27 15:09:00      6830
2011-09-27 15:10:00      4509
2011-09-27 15:11:00      4902
2011-09-27 15:12:00      6089
2011-09-27 15:13:00      6075
2011-09-27 15:14:00     14380

您要求提供LastSize和Volume。 getBAT返回的“音量”是条形时间内交易的总金额。因此,1分钟的条形码,就是1分钟内的总体积。

这是一个不使用twsInstrument的答案: 我几乎可以肯定这会有效,但正如我所说,我没有所需的市场数据订阅,所以我无法测试。

reqHistoricalData(tws, twsFuture("YG","NYSELIFFE","201112"))

再次使用e-mini S&amp; P:

> mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201112"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
waiting for TWS reply on ES .... done.

> head(mydata)
                    ESZ1.Open ESZ1.High ESZ1.Low ESZ1.Close ESZ1.Volume ESZ1.WAP ESZ1.hasGaps ESZ1.Count
2011-09-21 15:30:00   1155.25   1156.25  1155.00    1155.75        3335  1155.50            0        607
2011-09-21 15:31:00   1155.75   1156.25  1155.50    1155.75         917  1155.95            0        164
2011-09-21 15:32:00   1155.75   1156.25  1155.50    1156.00         859  1155.90            0        168
2011-09-21 15:33:00   1156.00   1156.25  1155.50    1155.75         642  1155.83            0        134
2011-09-21 15:34:00   1155.50   1156.00  1155.25    1155.25        1768  1155.65            0        232
2011-09-21 15:35:00   1155.25   1155.75  1155.25    1155.25         479  1155.45            0         94

您尝试的一个问题是,如果您使用的barSize为'1 S',则您的持续时间不能超过'60 S',请参阅IB Historical Data Limitations