首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBrokers -我是如何发送100000到IBrokers:::.placeOrder的?

IBrokers -我是如何发送100000到IBrokers:::.placeOrder的?
EN

Stack Overflow用户
提问于 2014-12-22 01:46:27
回答 1查看 314关注 0票数 3

我使用IBrokers在IDEALPRO上打开澳元-美元的订单

这里的语法对我来说很好,可以卖9万美元:

代码语言:javascript
复制
# 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份订单:

代码语言:javascript
复制
IBrokers:::.placeOrder(twsobj, myaud, twsOrder(myorderid,"SELL", 100000, "MKT"))

命令失败了。

我在日志里看到了这个:

代码语言:javascript
复制
java.lang.NumberFormatException: For input string: "1e+05"

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

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

我怀疑错误是IBrokers将1e+05发送到API而不是100000。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-23 08:40:55

代码语言:javascript
复制
# 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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27595628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档