IBRK TWS API error() 需要 4 个位置参数,但给出了 5 个

jay*_*ain 4 python tws interactive-brokers

如果我运行基本的 TWS 示例,我会收到错误消息 。如果我注释掉回调,error()它就可以正常运行。我已经在几个例子中尝试过这个并得到相同的结果。

    Exception has occurred: TypeError
    
    error() takes 4 positional arguments but 5 were given
    
    File "/Users/jayurbain/Dropbox/twsapi/Algorithmic Trading using Interactive Broker's 
    Python API /ib_basic_app.py", line 20, in <module> app.run()
Run Code Online (Sandbox Code Playgroud)

请指教。

这是在wrapper.py 中被覆盖的回调:

    def error(self, reqId:TickerId, errorCode:int, errorString:str, advancedOrderRejectJson = ""):
Run Code Online (Sandbox Code Playgroud)

这是完整的代码:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
 
class TradingApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self,self)
        
    def error(self, reqId, errorCode, errorString):
        print("Error {} {} {}".format(reqId,errorCode,errorString))
 
app = TradingApp()      
app.connect("127.0.0.1", 7497, clientId=1)
app.run()
Run Code Online (Sandbox Code Playgroud)

mis*_*oop 5

从 10.14 开始的版本中存在重大 API 更改。由于错误回调还有另一个参数,因此您需要将其包含在 args 中。

def error(self, reqId, errorCode, errorString, advancedOrderRejectJson):
    print("Error {} {} {}".format(reqId,errorCode,errorString))
Run Code Online (Sandbox Code Playgroud)