我试图了解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软件包,我正在尝试为交易设置多个收盘价.例如,以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) 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管理查找.
我试图请求历史期货数据,但对于初学者来说,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?
档案?
我一直在使用来自伟大的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) 如何从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创建一个标签
我正在尝试从 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 …
有人可以为我提供reqExecutions的工作示例吗?我在使用ewrapper和回调机制时遇到了困难.在搜索谷歌的工作示例后,我无法掌握任何简单的工作.请注意,我不是程序员,这就是为什么很难让我的头脑缠绕在ewrapper和回调上.
我正在使用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)
有想法该怎么解决这个吗?
我目前正在学习如何使用该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 上的 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通过Interactive Brokers API进行简单的订单.
例如,我正在尝试购买1股IBM和1股MSFT.
我找不到任何关于如何在R中执行此步骤的文档.是否有人熟悉使用TWS API在R中工作?
谢谢!