При использовании ibkr TWS почему мой код работает с первого раза, а затем останавливается, если я не перезагружаю TWS? - PullRequest
0 голосов
/ 23 января 2020

Пока учусь пользоваться IBPY. Кажется, что каждый раз, когда я запускаю свой код в первый раз, все работает нормально, но затем, если я пытаюсь запустить его снова, консоль полностью отключается. Исправление, которое я использую в настоящее время, состоит в том, чтобы просто перезапустить TWS, который работает нормально, но на самом деле не выглядит жизнеспособным долгосрочным решением.

Мои методы запуска и остановки в TestApp, которые реализуют EWrapper и EClient

def start(self):
    print("start")

def stop(self):
    print("disconnect")
    self.done = True
    self.disconnect()

Мой основной метод:

def main():
    app = TestApp()
    app.nextOrderId = 0
    app.connect("127.0.0.1", 7497, 1)

    for stock in app.watchlist:
        contract = USStock(stock[0],stock[1])
        app.reqRealTimeBars(stock[2],contract,5,"TRADES", True, [])


    Timer(10, app.stop).start()
    app.run()

Выведите при первом запуске кода.

start
Error:  -1   2104   Market data farm connection is OK:usfarm.nj
Error:  -1   2104   Market data farm connection is OK:cashfarm
Error:  -1   2104   Market data farm connection is OK:usfarm
Error:  -1   2106   HMDS data farm connection is OK:ushmds
Error:  -1   2158   Sec-def data farm connection is OK:secdefnj
RealTimeBar. TickerId: 1000 Time: 2020-01-23 11:47:10 open: 571.21 high: 571.21 low:: 571.21 close: 571.21 volume: 1 wap: 571.21 count: 1
RealTimeBar. TickerId: 1001 Time: 2020-01-23 11:47:10 open: 2.0677 high: 2.0677 low:: 2.0677 close: 2.0677 volume: 0 wap: 2.0677 count: 0
RealTimeBar. TickerId: 1002 Time: 2020-01-23 11:47:10 open: 4.55 high: 4.56 low:: 4.55 close: 4.55 volume: 20 wap: 4.55 count: 2
RealTimeBar. TickerId: 1003 Time: 2020-01-23 11:47:10 open: 3.465 high: 3.465 low:: 3.465 close: 3.465 volume: 0 wap: 3.465 count: 0
RealTimeBar. TickerId: 1000 Time: 2020-01-23 11:47:15 open: 571.17 high: 571.17 low:: 571.17 close: 571.17 volume: 1 wap: 571.17 count: 1
RealTimeBar. TickerId: 1003 Time: 2020-01-23 11:47:15 open: 3.465 high: 3.465 low:: 3.465 close: 3.465 volume: 0 wap: 3.465 count: 0
RealTimeBar. TickerId: 1001 Time: 2020-01-23 11:47:15 open: 2.0677 high: 2.0677 low:: 2.0677 close: 2.0677 volume: 0 wap: 2.0677 count: 0
RealTimeBar. TickerId: 1002 Time: 2020-01-23 11:47:15 open: 4.55 high: 4.55 low:: 4.55 close: 4.55 volume: 0 wap: 4.55 count: 0
RealTimeBar. TickerId: 1000 Time: 2020-01-23 11:47:20 open: 571.14 high: 571.39 low:: 571.14 close: 571.39 volume: 25 wap: 571.26 count: 12
RealTimeBar. TickerId: 1002 Time: 2020-01-23 11:47:20 open: 4.56 high: 4.56 low:: 4.55 close: 4.56 volume: 10 wap: 4.56 count: 3
unhandled exception in EReader thread
Traceback (most recent call last):
  File "C:\Users\nlevi\Anaconda3\lib\site-packages\ibapi\reader.py", line 34, in run
    data = self.conn.recvMsg()
  File "C:\Users\nlevi\Anaconda3\lib\site-packages\ibapi\connection.py", line 99, in recvMsg
    buf = self._recvAllMsg()
  File "C:\Users\nlevi\Anaconda3\lib\site-packages\ibapi\connection.py", line 119, in _recvAllMsg
    buf = self.socket.recv(4096)
OSError: [WinError 10038] An operation was attempted on something that is not a socket
RealTimeBar. TickerId: 1003 Time: 2020-01-23 11:47:20 open: 3.465 high: 3.465 low:: 3.465 close: 3.465 volume: 0 wap: 3.465 count: 0
RealTimeBar. TickerId: 1001 Time: 2020-01-23 11:47:20 open: 2.0544 high: 2.06 low:: 2.0544 close: 2.06 volume: 6 wap: 2.0591 count: 2
disconnect
...