R IBrokers API 无法在过期月份内请求历史数据



为了将数据从IB下载到R中,我遵循了这里的步骤:IBrokers请求历史期货合约数据?。这与这里大致相同:https://cran.r-project.org/web/packages/IBrokers/vignettes/IBrokers.pdf。

这一切都有效。但有一个例外:reqHistoricalData不适用于过期月份。运行以下代码会显示错误消息:"警告消息:在 errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106, : 找不到请求的安全定义"

#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常见问题解答对该消息有如下说明:"为什么我会收到错误 200 - 当我为股票合约调用 reqContractDetails、reqMktData 或 addOrder() 时,找不到请求的安全定义?在股票合约中使用这些方法时,请将全局代码和交易类留空。(在 https://www.interactivebrokers.com/en/software/api/apiguide/tables/frequentlyaskedquestions.htm 找到)

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

您需要

include_expired设置为 true。我猜代码将是:

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

文档中参数的完整列表是:

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

并引用帮助页面:

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

所以你也可以尝试使用

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

相关内容

  • 没有找到相关文章

最新更新