当使用ibkr-TWS时,为什么我的代码在第一次工作时就会停止,除非我重新启动TWS?

2024-06-01 06:00:36 发布

您现在位置:Python中文网/ 问答频道 /正文

现在正在学习使用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

Tags: selfappclosedatatimeiscountopen