标签: ibrokers

特定请求的版本号,Interactive Brokers的IBrokers包

我试图了解IBrokers包,并在阅读其实时小插图时,在2.4.1节末尾,该软件包的作者Jeffrey A. Ryan写道:

[...]要从TWS请求当前时间,需要发送"当前时间"(.swsOutgoingMSG $ REQ CURRENT TIME)的代码:"49"和特定请求的当前版本号.在当前时间的情况下,版本只是字符"1".

通过扫描IBrokers包的源代码,我注意到作者对不同的请求使用不同的VERSION编号(例如,对于reqMrktData,VERSION = 9).无论是谁,当我查看Interactive Brokers API 文档时,对于reqMktData()函数,我看到该函数不需要"版本号"作为参数.

我还试图寻找一个特定请求的版本号的一般解释,以及我们可能需要它的时间/地点,但我找不到任何.

如果有人可以向我提供"VERSION"变量的解释,它的意图/实现,以及我们如何/在何处可以找到针对Interactive Brokers API的各种请求的版本号列表,我将不胜感激.

先感谢您

r ibrokers

6
推荐指数
1
解决办法
569
查看次数

R中使用IBrokers的支架订单中的多个数量

我正在使用R中的ibrokers软件包,我正在尝试为交易设置多个收盘价.例如,以106美元的价格购买100股AAPL,以107美元的价格卖出50股,以108美元的价格卖出50股,止损价为105美元.

当我发送多个获利订单时,似乎忽略了50的数量,而是我得到两个卖单,每个100股.

这是我正在运行的代码

tws <- twsConnect() 

stock <- twsEquity("AAPL")
parentLongId <- reqIds(tws)

parentLongOrder <- twsOrder(parentLongId, action="BUY", totalQuantity = 100, 
                            orderType = "LMT", lmtPrice = 106, 
                            transmit=TRUE)
placeOrder(tws, stock, parentLongOrder)


childLongProfitId <- reqIds(tws)
childLongProfitOrder <- twsOrder(childLongProfitId, action="SELL", totalQuantity = 50, 
                                 orderType = "LMT", lmtPrice = 107,
                                 transmit=TRUE, parentId = parentLongId)
placeOrder(tws, stock, childLongProfitOrder)

childLongProfitId2 <- reqIds(tws)
childLongProfitOrder2 <- twsOrder(childLongProfitId2, action="SELL", totalQuantity = 50, 
                                  orderType = "LMT", lmtPrice = 108,
                                  transmit=TRUE, parentId = parentLongId)
placeOrder(tws, stock, childLongProfitOrder2)

childLongStopId <- reqIds(tws)
childLongStopOrder <- …
Run Code Online (Sandbox Code Playgroud)

r trading ibrokers

6
推荐指数
1
解决办法
386
查看次数

R Ibrokers twsOPT用法

reqMktData(tws,twsOPT("AAPL 110820C00390000"))
Run Code Online (Sandbox Code Playgroud)

要么

reqMktData(tws,twsOPT("AAPL110820C00390000"))
Run Code Online (Sandbox Code Playgroud)

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

为什么?

reqMktData(tws,twsSTK("AAPL"))
Run Code Online (Sandbox Code Playgroud)

工作良好.

该联机帮助页说:

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

TWS上的期权合约具有与标准数据请求不同的某些规则.

需要本地符号.这可以在合约详细信息的主要交易平台屏幕上找到,也可以通过网站www.interactivebrokers.com找到

由于需要本地符号,因此所有其他值都是多余的.最好只需指定本地名称,让TWS管理查找.

r quantitative-finance ibrokers

5
推荐指数
2
解决办法
1822
查看次数

IBrokers要求历史期货合约数据?

我试图请求历史期货数据,但对于初学者来说,ibrokers.pdf文档记录不充分.示例Gold Miny Contract Dec11 NYSELIFFE:

goldminy<-twsFuture("YG","NYSELIFFE","201112",multiplier="33.2")
reqHistoricalData(conn,
Contract= "goldminy",
endDateTime"",
barSize = "1 S",
duration = "1 D",
useRTH = "0",
whatToShow = "TRADES","BID", "ASK", "BID_ASK",
timeFormat = "1",
tzone = "",
verbose = TRUE,
tickerId = "1",
eventHistoricalData,
file)
Run Code Online (Sandbox Code Playgroud)

我也不知道如何正确指定一些数据参数?

whatToShow?我需要Date,Time,BidSize,Bid,Ask,AskSize,Last,LastSize,Volume

tickerID?

eventHistoricalData?

档案?

r ibrokers

5
推荐指数
1
解决办法
3046
查看次数

IBrokers reqMktData,如何为回调函数添加超时?

我一直在使用来自伟大的IBrokers软件包的改进的snapShot功能来获得IB的"最后"价格,并且它一直非常适合流动性股票.我做的电话是例如.

reqMktData(tws, twsSTK("AAPL"), eventWrapper=eWrapper.data.Last(1),CALLBACK=snapShot)
Run Code Online (Sandbox Code Playgroud)

在尝试检索非常缺乏流动性的股票或期权时会出现问题.因此,我需要为snapShot函数添加超时.如何以及在何处添加超时?

具有snapShot功能的代码:

library(IBrokers)
tws <- twsConnect()

eWrapper.data.Last <- function(n) {
  eW <- eWrapper(NULL)  # use basic template
  eW$assign.Data("data", rep(list(structure(.xts(matrix(rep(NA_real_,2),nc=2),0),
                                      .Dimnames=list(NULL,c("LastSize","Last")))),n))

  eW$tickPrice <- function(curMsg, msg, timestamp, file, ...) 
  {
    tickType = msg[3]
    msg <- as.numeric(msg)
    id <- msg[2] #as.numeric(msg[2])
    data <- eW$get.Data("data") #[[1]]  # list position of symbol (by id == msg[2])
    attr(data[[id]],"index") <- as.numeric(Sys.time())
    nr.data <- NROW(data[[id]])
    if(tickType == .twsTickType$LAST) {
      data[[id]][nr.data,2] <- msg[4]
    }
    eW$assign.Data("data", data)
    c(curMsg, msg)
  }
  eW$tickSize  <- function(curMsg, msg, timestamp, file, …
Run Code Online (Sandbox Code Playgroud)

r ibrokers

5
推荐指数
1
解决办法
1949
查看次数

IBrokers历史指数数据

如何从Interactive Brokers获取IND的历史数据?如果是期货,我会使用这个命令(这里建议IBrokers请求历史期货合约数据?):

library(twsInstrument)
a <- reqHistoricalData(tws, getContract("ESJUN2013"))
Run Code Online (Sandbox Code Playgroud)

但是对connid标准普尔指数的相应指挥给出了一个错误:

> a <- reqHistoricalData(tws, getContract("11004968"))
Connected with clientId 110.
Contract details request complete. Disconnected.
waiting for TWS reply on ES ....failed.
Warning message:
In errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106,  :
  Error validating request:-'uc' : cause - HMDS Expired Contract Violation:contract can not expire.
Run Code Online (Sandbox Code Playgroud)

PS有足够积分的人应该为IBrokers创建一个标签

r ibrokers

5
推荐指数
1
解决办法
1965
查看次数

IBrokers 启用延迟市场数据?

我正在尝试从 IBrokers 下载数据,但目前出现错误。我不知道如何解决它。

注意:我没有订阅实时报价,但我确实收到了延迟的市场数据。

我的步骤是:

security = twsSTK("AAPL")
is.twsContract(security)
Run Code Online (Sandbox Code Playgroud)

1正确

security_copy= twsEquity('AAPL')
reqMktData(tws,security)
Run Code Online (Sandbox Code Playgroud)

错误输出:

TWS 消息:2 1 162 历史市场数据服务错误消息:ISLAND STK 无市场数据权限 TWS 消息:2 1 366 未找到代码 id:1 的历史数据查询 TWS 消息:2 1 10168 未订阅请求的市场数据。未启用延迟市场数据

历史数据功能似乎也有问题。

data_AAPL=reqHistoricalData(tws, security)
Run Code Online (Sandbox Code Playgroud)

我也尝试过链接中的示例

 IBrokersRef() # IBrokers Reference Card in PDF viewer
 tws <- twsConnect() # make a new connection to the TWS
 reqCurrentTime(tws) # check the server's timestamp
 contract <- twsEquity('IBKR','SMART','ISLAND') # equity specification
 reqHistoricalData(tws,contract) # request historical data
Run Code Online (Sandbox Code Playgroud)

结果:

等待 TWS 对 IBKR …

r ibrokers

5
推荐指数
1
解决办法
1447
查看次数

reqExecutions IBrokers包

有人可以为我提供reqExecutions的工作示例吗?我在使用ewrapper和回调机制时遇到了困难.在搜索谷歌的工作示例后,我无法掌握任何简单的工作.请注意,我不是程序员,这就是为什么很难让我的头脑缠绕在ewrapper和回调上.

r ibrokers interactive-brokers

4
推荐指数
1
解决办法
1379
查看次数

错误在Ibrokers上使用R获取EUR.USD历史数据

我正在使用IBrokers包和twsInstrument,由于某种原因,它使用最简单的方法给我一个错误.

require("IBrokers")
require("twsInstrument")
tws <- ConnectIB()
past.data<-reqHistoricalData(tws,getContract("EUR.USD"))
Run Code Online (Sandbox Code Playgroud)

给我

waiting for TWS reply on EUR ....failed.
Warning message:
In errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106,  :
Historical Market Data Service error message:No historical market data for  EUR/CASH@IDEALPRO Last 1d
Run Code Online (Sandbox Code Playgroud)

有想法该怎么解决这个吗?

finance r trading ibrokers

3
推荐指数
1
解决办法
2058
查看次数

R IBrokers.如何让货币合约在reqHistoricalData调用中工作?例如CADUSD费率?以及如何拉动指数价格?例如标准普尔,DJI?

我目前正在学习如何使用该IBrokers软件包.

我可以按照我想要的频率和期权价格拉动股票价格,但我目前仍然坚持拉动外汇汇率.

我不知道如何设置正确的twsContract,用于呼叫reqHistoricalData.

我有兴趣以1分钟为基础获得CADUSD货币.我怎样才能做到这一点?

手册中的示例给出:

currency <- twsCurrency("EUR")
Run Code Online (Sandbox Code Playgroud)

当我试着打电话给reqHistoricalData(tws, currency)它说它回来时出现了一个错误,上面写着"没有历史数据可用1D".因为我甚至无法在手册中找到工作的例子,所以我很困惑......

有人可以请教我正确的语法是什么?如果我有几个实际工作的例子,我可以从那里拿走它.

此外,当我尝试使用"USD.CAD""CAD.USD"作为twsContract对象中的自动收报机时,我收到投诉,这不是有效的安全性.我怎样才能找出正确的自动收报机名称USD.CAD?现在,我通过查看同时显示的交互式经纪人应用程序并输入公司名称并进行搜索来找出股票的票据.股票代码通常会返回例如(当我想在交互式经纪人工作站中将此安全性添加到我的投资组合时,输入Apple,返回AAPL).

任何帮助将非常感激.

另外,另一个相关的问题是我如何能够在1分钟内拉出标准普尔500价格指数的历史呢?

我猜我会twsContract在R中使用一个对象,但我不知道要使用哪些参数.股票代码应该是什么?贸易工作站提到这是一个"指数"的产品类型(显然),它不适合任何类的包装纸twsStock,twsCurrency等等......此外,是否有这个地方,它的实际工作的例子吗?

r trading ibrokers

3
推荐指数
1
解决办法
1849
查看次数

IBrokers - reqMktData 导致错误,提示股票代码“不明确”

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

由于一个奇怪的原因,微软(MSFT)不起作用。

例如,这有效:

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

但是,这不起作用:

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

错误信息如下:

2 3 200 The contract description specified for MSFT is ambiguous. 
Run Code Online (Sandbox Code Playgroud)

然而,这并不是一个含糊的股票,并且与 YHOO 和 AAPL 位于同一交易所。

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

r tws ibrokers

3
推荐指数
1
解决办法
2993
查看次数

IBrokers:使用R排队订单

我正在尝试使用R通过Interactive Brokers API进行简单的订单.

例如,我正在尝试购买1股IBM和1股MSFT.

我找不到任何关于如何在R中执行此步骤的文档.是否有人熟悉使用TWS API在R中工作?

谢谢!

r tws ibrokers

2
推荐指数
1
解决办法
611
查看次数