【问题标题】:R IBrokers API fails to reqHistoricalData for expired monthsR IBrokers API 无法 reqHistoricalData 过期月份
【发布时间】:2016-04-27 05:58:26
【问题描述】:

为了将数据从 IB 下载到 R,我已按照以下步骤操作:IBrokers request Historical Futures Contract Data?。和这里差不多:https://cran.r-project.org/web/packages/IBrokers/vignettes/IBrokers.pdf.

一切正常。除了一个例外:reqHistoricalData 不适用于过期月份。运行以下代码会给出错误消息:“警告消息:In errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106, : No security definition has found for the request "

#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() 时,未找到请求的安全定义?当为股票合约使用这些方法时,请将 Global Symbol and Trading Class 留空。” (位于https://www.interactivebrokers.com/en/software/api/apiguide/tables/frequentlyaskedquestions.htm

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

【问题讨论】:

    标签: r trading ibrokers


    【解决方案1】:

    您需要将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')
    

    【讨论】:

    • 非常感谢。还是不行。现在不同的问题。 mydata &lt;- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201603",include_expired='1'), barSize='1 hour', duration='5 D', useRTH='0', whatToShow='TRADES') 返回“等待 ES 上的 TWS 回复 ....失败。警告消息:在 errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106, : 历史市场数据服务错误消息:HMDS查询没有返回数据:ESH6@GLOBEX Trades”。它适用于 201606(当月)。
    • 如果没有数据,那么您只是使用了错误的日期。不要忘记它有一个不再交易的到期日。使用到期月中旬之前的较早日期(对于 ES)。因此,对于 H=Mar,使用 Mar 15/2016 作为最晚日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2020-10-24
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多