R IBrokers API在过期的几个月内无法使用reqHistoricalData

时间:2016-04-27 05:58:27

标签: r trading ibrokers

为了将数据从IB下载到R中,我遵循了以下步骤:IBrokers request Historical Futures Contract Data?。与此处大致相同:https://cran.r-project.org/web/packages/IBrokers/vignettes/IBrokers.pdf

一切正常。有一个例外:reqHistoricalData不适用于已过期的月份。运行以下代码会显示错误消息:&#34; 警告消息:在errorHandler中(con,verbose,OK = c(165,300,366,2104,2106,:未找到请求的安全定义< / EM>&#34;

#DOES NOT WORK (using expired month)
tws <- twsConnect()
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201603"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')

#YET THE FOLLOWING DO WORK (using unexpired months)
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201606"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201609"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
getContract("ES_M6")

IB常见问题解答说明了以下信息: &#34;为什么我收到错误200-当我为股票合约调用reqContractDetails,reqMktData或addOrder()时,没有找到请求的安全定义?将这些方法用于股票合约时,请将全局符号和交易类留空。&#34; (见https://www.interactivebrokers.com/en/software/api/apiguide/tables/frequentlyaskedquestions.htm

非常感谢对此的任何见解。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要将include_expired设置为true。我猜测代码是:

twsFuture("ES","GLOBEX","201603",include_expired='1')

文档中args的完整列表是:

twsEquity(symbol,
          exch="SMART",
          primary,
          strike='0.0',
          currency='USD',
          right='',
          local='',
          multiplier='',
          include_expired='0',
          conId=0)

引用帮助页面:

  

endDateTime参数的格式必须为&#39; CCYYMMDD HH:MM:SS TZ&#39;。   如果未指定,则从TWS服务器返回的当前时间将是   使用。这是回填数据的首选方法。 'TZ'   字符串的一部分是可选的。

所以你也可以尝试使用

reqHistoricalData(..., endDateTime='20160315 16:00:00')