如果我运行一个基本的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()
请建议。
谢谢,周杰伦
下面是在wrapper.py中被覆盖的回调:
def error(self, reqId:TickerId, errorCode:int, errorString:str, advancedOrderRejectJson = ""):
完整代码如下:
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()
从10.14开始的版本中有破坏性的API更改。由于错误回调还有另一个参数,因此需要将其包含在args中。
def error(self, reqId, errorCode, errorString, advancedOrderRejectJson):
print("Error {} {} {}".format(reqId,errorCode,errorString))
解决这个问题的方法是执行python setup install
而不是使用pip
来安装ibapi。谢谢你的回答。