2014-10-30 88 views
0

我使用的包裹:IBrokers。当我请求历史数据时,它适用于我。也致电reqAccountUpdates()运作良好。R套餐IBrokers placeOrder()功能失败

我有问题,这个脚本:

# myscript.r 

.libPaths("rpackages") 
library(IBrokers) 
tws2 = twsConnect(2) 
print('Attempting BUY') 
mytkr  = twsFuture("ES","GLOBEX","201412") 
myorderid = sample(1001:3001, 1) 
IBrokers:::.placeOrder(tws2, mytkr, twsOrder(myorderid, "BUY", "1", "MKT")) 
twsDisconnect(tws2) 

有时候上面的脚本工作好。通常虽然失败。当它失败时,它似乎连接好。

然后我看到这在我的交易平台控制台:

03:47:45:581 JTS-EServerSocket-290: [2:47:71:1:0:0:0:ERR] Message type -1. Socket I/O error - 
03:47:45:581 JTS-EServerSocket-290: Anticipated error 
jextend.d: Socket I/O error - 
    at jextend.sc.b(sc.java:364) 
    at jextend.ch.sb(ch.java:1534) 
    at jextend.ch.run(ch.java:1390) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:196) 
    at java.net.SocketInputStream.read(SocketInputStream.java:122) 
    at java.net.SocketInputStream.read(SocketInputStream.java:210) 
    at jextend.xh.d(xh.java:45) 
    at jextend.sc.c(sc.java:579) 
    at jextend.sc.r(sc.java:227) 
    at jextend.af.a(af.java:232) 
    at jextend.sc.f(sc.java:650) 
    at jextend.pd.a(pd.java:822) 
    at jextend.sc.b(sc.java:358) 
    ... 3 more 
03:47:45:583 JTS-EServerSocket-290: [2:47:71:1:0:0:0:ERR] Socket connection for client{2} has closed. 
03:47:45:583 JTS-EWriter14-291: [2:47:71:1:0:0:0:ERR] Unable write to socket client{2} - 
03:47:45:584 JTS-EServerSocketNotifier-288: Terminating 

你能提供你会如何处理这个问题搏斗任何想法?其他

一个一块信息:

我想调用reqIds()可能是必要的。有时候reqIds()会返回一个不够高的ID。然后,我会用它并且placeOrder()会失败。所以,我打电话reqIds()但后来使用Sys.time()给我一个比我使用的最后一个ID更大的ID。

另一个问题可能是我从PowerPoint中复制出来的一些代码文本。一些代码字符可能已经损坏。

+2

你能回答你自己的问题,而不是编辑问题的答案吗? (我不记得你目前的声望级别是否禁止你这么做)。 – 2014-10-30 21:31:38

回答

0

主要问题是orderid。

我需要小心如何生成orderid。

另外,我可能已经从一个有示例的powerpoint preso中挖掘出糟糕的角色。

我发表了一些代码,它在这个线程的评论中起作用。

+0

该代码应该发布在此答案中,而不是在问题中。这不是一个论坛。 – Jamal 2014-10-31 23:57:02