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

Joe*_*jen 5 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)
Run Code Online (Sandbox Code Playgroud)

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

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

tickerID?

eventHistoricalData?

档案?

GSe*_*See 7

我写了twsInstrument包(在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 ""
Run Code Online (Sandbox Code Playgroud)

我没有订购NYSELIFFE的市场数据,所以我将使用2011年12月的e-mini S&P未来来完成其余的答案.

可以得到这样的历史数据

tws <- twsConnect()
hist.data <- reqHistoricalData(tws, getContract("ES_Z1"))
Run Code Online (Sandbox Code Playgroud)

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

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

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
Run Code Online (Sandbox Code Playgroud)

你问过LastSize和Volume.getBAT返回的"音量"是条形时间内交易的总金额.因此,在1分钟的条形码下,它是在1分钟内发生的总体积.

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

reqHistoricalData(tws, twsFuture("YG","NYSELIFFE","201112"))
Run Code Online (Sandbox Code Playgroud)

再次使用e-mini S&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
Run Code Online (Sandbox Code Playgroud)

您尝试的一个问题是,如果您使用的barSize为'1 S',则您的持续时间不能超过'60 S'请参阅IB历史数据限制