gpt4 book ai didi

r - IBrokers需要历史 future 合约数据吗?

转载 作者:行者123 更新时间:2023-12-04 18:13:49 25 4
gpt4 key购买 nike

我试图索取历史 future 数据,但对于初学者而言,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?

文件 ?

最佳答案

我编写了twsInstrument软件包(on RForge)来减轻这些麻烦。
如果您提供合理的契约(Contract),getContract将为您找到契约(Contract)。这些格式中的任何一种都可以工作:
“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月的电子迷你S&P future 。

你可以得到像这样的历史数据
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”表示卖出价将被用于高价,而买价将被用于低价。

既然您说该插图太高级了,就需要重复一遍,即盈透证券将历史数据请求限制为每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标准普尔:
> 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 - IBrokers需要历史 future 合约数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com