【问题标题】:IBrokers request Historical Futures Contract Data?IBrokers 要求历史期货合约数据?
【发布时间】:2011-09-27 17:43:49
【问题描述】:

我尝试请求历史期货数据,但对于初学者来说,ibrokers.pdf 文档的文档记录不够好。 示例黄金矿业合约 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 ?我需要日期、时间、BidSize、Bid、Ask、AskSize、Last、LastSize、Volume

tickerID ?

eventHistoricalData ?

文件?

【问题讨论】:

  • Historical中还有一个's' ...已编辑。

标签: r ibrokers


【解决方案1】:

我编写了 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&P 期货来回答余下的问题。

可以获得这样的历史数据

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

这会将这些列返回给您,并且都是“交易”数据

> 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" 表示卖出价将用于最高价,买入价将用于最低价。

由于您说小插曲过于先进,因此需要重复一下,盈透证券将历史数据请求限制为每 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&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

【讨论】:

  • 是否可以一次下载多个合约,如何在下载文件后立即存储文件,否则我会遇到 R 中的缓存问题?
  • 每 10 秒 1 次请求,以避免违反节奏。也许你对?twsInstrument:::reqTBBOhistory感兴趣
  • twsInstrument 包是一个非常有用的包。 R 版本 3.0.2 何时更新?
  • @bill_080 它适用于 3.0.2,没问题。如果您在使用install.packages 安装时遇到问题,可以尝试library(devtools);install_github("twsInstrument", "gsee"),或按照指示here 签出代码并自行构建。
猜你喜欢
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2021-12-28
相关资源
最近更新 更多