IBrokers – 我如何向IBrokers发送100000 :::。placeOrder?

我正在使用IBrokers在IDEALPRO上开设AUD-USD订单

这里的语法很适合我销售90,000:

# myscript.r .libPaths("rpackages") library(IBrokers) myconid = 3 twsobj = twsConnect(myconid) myaud = twsCurrency("AUD",currency="USD",exch="IDEALPRO",primary="",strike="0.0",right="",local="",multiplier="",include_expired="0",conId=myconid) Sys.sleep(2) myorderid = as.integer(reqIds(twsobj)) print(myorderid) Sys.sleep(2) myorderid = as.integer(difftime(Sys.time(), "2014-10-30", units = "secs")) Sys.sleep(2) IBrokers:::.placeOrder(twsobj, myaud, twsOrder(myorderid,"SELL", 90000, "MKT")) Sys.sleep(4) twsDisconnect(twsobj) 

接下来,我尝试使用此API调用下订单100,000:

 IBrokers:::.placeOrder(twsobj, myaud, twsOrder(myorderid,"SELL", 100000, "MKT")) 

订单失败。

我在日志中看到了这个:

 java.lang.NumberFormatException: For input string: "1e+05" 

一个简单的解决方法是为50000下2个订单。

我正在寻找其他解决方法的线索。

我怀疑这个错误是IBrokers正在向API发送1e + 05而不是100000。

 # myscript.r .libPaths("rpackages") library(IBrokers) myconid = 3 twsobj = twsConnect(myconid) myaud = twsCurrency("AUD",currency="USD",exch="IDEALPRO",primary="",strike="0.0",right="",local="",multiplier="",include_expired="0",conId=myconid) Sys.sleep(2) myorderid = as.integer(reqIds(twsobj)) print(myorderid) Sys.sleep(2) myorderid = as.integer(difftime(Sys.time(), "2014-10-30", units = "secs")) Sys.sleep(2) # my workaround: options("scipen"=4) IBrokers:::.placeOrder(twsobj, myaud, twsOrder(myorderid,"SELL", 190000, "MKT")) Sys.sleep(4) twsDisconnect(twsobj) 
Interesting Posts