【问题标题】:IBrokers - reqMktData results in error saying ticker is "ambiguous"IBrokers - reqMktData 导致错误提示代码为“模糊”
【发布时间】:2015-02-14 05:10:06
【问题描述】:

我正在尝试使用 R 上的 IBrokers API 捕捉实时市场数据。

出于一个奇怪的原因,Microsoft (MSFT) 不起作用。

例如,这是有效的:

library("IBrokers")
tws <- twsConnect()
nms <- c("AAPL","YHOO")
reqMktData(tws, lapply(nms, twsSTK), tickGenerics="", snapshot=T)
twsDisconnect(tws)

但是,这不起作用:

library("IBrokers")
tws <- twsConnect()
nms <- c("AAPL","YHOO","MSFT")
reqMktData(tws, lapply(nms, twsSTK), tickGenerics="", snapshot=T)
twsDisconnect(tws)

错误信息如下:

2 3 200 The contract description specified for MSFT is ambiguous. 

但是,这并不是一个模棱两可的代码,并且与 YHOO 和 AAPL 在同一个交易所。

有人知道我需要做什么来解决这个问题吗?谢谢。

【问题讨论】:

  • reqContractDetails(tws, twsSTK("MSFT", currency=""))。有多种工具的代码为“MSFT”。您可以将单个合同传递给reqMktData。例如reqContractDetails(tws, twsSTK("MSFT"))[[1]][["contract"]]
  • 我明白了,谢谢 GSEE。看起来第一个总是主要列表。另外两个在 AEB 交易所和 IBIS 交易所进行交易,这两个交易所都不在美国。你知道我怎样才能按照你的建议让它默认为第一个出来的吗?
  • 谢谢 GSee。看起来正确的语法是:reqMktData(tws,twsSTK("MSFT",exch="SMART", primary="NASDAQ", currency="USD"),tickGenerics="",snapshot=T) 我想知道您是否对如何将其集成到上面的原始代码中提出了建议?它需要为每个标识符动态选择“primary”和“exch”。非常感谢!这真的很有帮助!
  • 你不能假设第一个就是你想要的。我认为如果您使用的最后一个合约是欧洲股票,那么如果您拨打reqContractDetails,它将在第一个位置显示欧洲股票。我不能 100% 确定这一点,但我相当有信心返回合同的顺序会改变,甚至可能在同一个会话中。

标签: r ibrokers tws


【解决方案1】:

为了解决这个问题,我只是为在纳斯达克交易不明确的单独代码指定了证券交易所。

tickers_nasdaq<-c("MSFT","INTC","CSCO")
reqMktData(tws, lapply(tickers_nasdaq, twsSTK, exch = "SMART", primary="NASDAQ", currency = "USD"), tickGenerics="", snapshot=T)

显然这并不理想,但至少它有效。

【讨论】:

    【解决方案2】:

    稍后回答...
    不应指定主要交易所,因为您会遇到其他符号的问题,而是将您的contract() 上的m_localSymbol 指定为与​​m_symbol 相同的值,在这种情况下:MSFT

    https://www.interactivebrokers.com/en/software/api/apiguide/java/contract.htm

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2019-08-31
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多