【问题标题】:R Ibrokers twsOPT usageR Ibrokers twsOPT 使用情况
【发布时间】:2015-08-11 22:01:17
【问题描述】:
reqMktData(tws,twsOPT("AAPL 110820C00390000"))

reqMktData(tws,twsOPT("AAPL110820C00390000"))

导致: TWS 消息:2 1 200 未找到请求的安全定义

为什么?

reqMktData(tws,twsSTK("AAPL"))

工作正常。

手册页说:

twsOption(local,
          expiry="",
          strike="",
          right="",
          exch="SMART",
          primary="",
          currency='USD',
          symbol='',
          multiplier="100",
          include_expired='0',
          conId=0)

TWS 上的期权合约有一些不同于标准数据请求的规则。

需要本地符号。这可以在 TWS 主屏幕上的合约详细信息下找到,或通过网站 www.interactivebrokers.com 找到

由于需要本地符号,所有其他值都是多余的。最好简单地指定本地名称并让 TWS 管理查找。

【问题讨论】:

  • 我不确定您为什么使用“AAPL110820C00390000!”你为什么不使用“AAPL”?我认为您使用的值不是正确的本地名称。

标签: r quantitative-finance ibrokers


【解决方案1】:

您没有得到正确的本地信息。正确的格式使用六个字符宽的字段(OSI 规范),您分别尝试使用 5 和 4。

当然,您不需要使用 local,但这需要更多关于不同参数的详细信息。

> reqContractDetails(ibg, twsOPT("AAPL  110820C00390000"))
[[1]]
List of 18
  $ version       : chr "6"
  $ contract      :List of 16
..$ conId          : chr "86896934"
..$ symbol         : chr "AAPL"
..$ sectype        : chr "OPT"
..$ exch           : chr "SMART"
..$ primary        : chr ""
..$ expiry         : chr "20110819"
..$ strike         : chr "390.0"
..$ currency       : chr "USD"
..$ right          : chr "C"
..$ local          : chr "AAPL  110820C00390000"
..$ multiplier     : chr "100"
..$ combo_legs_desc: chr ""
..$ comboleg       : chr ""
..$ include_expired: chr ""
..$ secIdType      : chr ""
..$ secId          : chr ""
..- attr(*, "class")= chr "twsContract"
$ marketName    : chr "AAPL"
$ tradingClass  : chr "AAPL"
$ conId         : chr "86896934"
$ minTick       : chr "0.01"
$ orderTypes    : chr [1:44] "ACTIVETIM" "ADJUST" "ALERT" "ALGO" ...
$ validExchanges: chr [1:12] "SMART" "AMEX" "BATS" "BOX" ...
$ priceMagnifier: chr "1"
$ underConId    : chr "265598"
$ longName      : chr "APPLE INC"
$ contractMonth : chr "201108"
$ industry      : chr "Technology"
$ category      : chr "Computers"
$ subcategory   : chr "Computers"
$ timeZoneId    : chr "EST"
$ tradingHours  : chr "20110817:0930-1600;20110818:0930-1600"
$ liquidHours   : chr "20110817:0930-1600;20110818:0930-1600"

您可以使用 as.twsContract 提取合同:

as.twsContract(reqContractDetails(ibg, twsOPT("AAPL  110820C00390000")))

或者直接调用 reqMktData 请求:

reqMktData(ibg, twsOPT("AAPL  110820C00390000"))

## OR

reqMktData(ibg, twsOPT("",symbol="AAPL",right="C", strike="390", expiry="201108"))

【讨论】:

    【解决方案2】:

    您可以通过使用 twsInstrument 包on R-Forge来避免这些类型的问题

    library(twsInstrument)
    

    其中任何一个都将获得 twsContract

    getContract("AAPL  111217P00390000") 
    getContract("AAPL     111217P00390000") #number of spaces does not matter
    getContract("AAPL20111217P00390000") #year can be 4 digits or 2
    getContract("AAPL_111217P00390000")
    getContract("AAPL111217P00390000")
    getContract("AAPL111217P390")
    getContract("AAPL_111217P390")
    getContract("AAPL_20111217P390")
    getContract("AAPL_111217P390.00")
    
    #by conId 
    getContract("93189601") 
    getContract(93189601) 
    

    所有这些都会给你同样的东西:

    > getContract(93189601)
    List of 16
     $ conId          : chr "93189601"
     $ symbol         : chr "AAPL"
     $ sectype        : chr "OPT"
     $ exch           : chr "SMART"
     $ primary        : chr ""
     $ expiry         : chr "20111216"
     $ strike         : chr "390"
     $ currency       : chr "USD"
     $ right          : chr "P"
     $ local          : chr "AAPL  111217P00390000"
     $ multiplier     : chr "100"
     $ combo_legs_desc: chr ""
     $ comboleg       : chr ""
     $ include_expired: chr ""
     $ secIdType      : chr ""
     $ secId          : chr ""
    

    很遗憾,您无法获得已过期期权的合约详情。我不知道这是否是 IBrokers 的问题,或者 Interactive Brokers 是否不支持,但获取已过期期货的合约详情是没有问题的

    > getContract("ESM1")
    Connected with clientId 100.
    Trying to resolve error in contract details. Using include_expired=1
    Contract details request complete. Disconnected.
     List of 16
     $ conId          : chr "73462897"
     $ symbol         : chr "ES"
     $ sectype        : chr "FUT"
     $ exch           : chr "GLOBEX"
     $ primary        : chr ""
     $ expiry         : chr "20110617"
     $ strike         : chr "0"
     $ currency       : chr "USD"
     $ right          : chr ""
     $ local          : chr "ESM1"
     $ multiplier     : chr "50"
     $ combo_legs_desc: chr ""
     $ comboleg       : chr ""
     $ include_expired: chr "1"
     $ secIdType      : chr ""
     $ secId          : chr ""
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多