2014-10-30 2 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) 

Иногда выше скрипт работает нормально. Обычно это терпит неудачу. Когда он терпит неудачу, он, кажется, подключается нормально.

Тогда я вижу это в моей TWS консоли:

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() вернул идентификатор, который был недостаточно высоким. Тогда я буду использовать его, и placeOrder() потерпит неудачу. Итак, я звоню reqIds(), но затем используйте Sys.time(), чтобы дать мне идентификатор, который больше, чем последний идентификатор, который я использовал.

Другой проблемой может быть некоторый код-код, который я скопировал из PowerPoint. Некоторые из кодовых символов могут быть повреждены.

+2

Можете ли вы ответить на свой вопрос, а не редактировать ответ на вопрос? (Я не помню, если ваш текущий уровень репутации запрещает вам делать это). –

ответ

0

Основная проблема была заказа.

Мне нужно быть осторожным, как я создаю orderid.

Кроме того, я, возможно, имел грязные символы из powerpoint preso, который имел пример.

Я разместил код, который работает в комментариях в этой теме.

Dan

+0

Этот код должен быть опубликован в этом ответе, а не в вопросе. И это не форум. – Jamal

Смежные вопросы