在 Visual Studio 代码中调试我的 Python 代码时,我收到错误消息:TypeError: IB.reqTickByTickData() 获得意外的关键字参数“handler”。
由于我通过 reqTickbyTickData() 流式传输来自 IB TWS 的数据(而不是通过 reqMktData),因此我无法使用 ib.pendingTickersEvent += on_price_update 将实时数据分发到代码函数,而是直接使用“处理程序”内 ib.reqTickByTickData(合约,“最后”,numberOfTicks = 0,ignoreSize = True,handler = on_tick_update)。
这就是我在本节中的代码的样子在此处输入图像描述
我检查了源代码中的函数,我通过“处理程序”将实时数据分发到这些函数。首先,我将数据分发到一个函数,然后从该函数内部调用第二个函数,以便数据也依赖于实时数据到达第二个函数。 这是我通过“处理程序”直接从 reqTickbyTickData() 调用的第一个函数在此处输入图像描述,然后我调用第二个函数在此处输入图像描述。这就是全部。有人遇到过同样的问题吗?任何提示将不胜感激。预先感谢。
您无需指定处理程序。 您必须使用编写的 API(或编写您自己的 API)。 无论您在哪里继承了 EWrapper 的子类,您都将获得回调(即处理程序),只需覆盖
tickByTickAllLast
。
您将在这里找到正确的论点。 https://ibkrcampus.com/campus/ibkr-api-page/twsapi-doc/#request-tick-data
所以做类似的事情
def tickByTickAllLast(self, reqId: int, tickType: int, time: int, price: float, size: Decimal, tickAtrribLast: TickAttribLast, exchange: str,specialConditions: str):
on_tick_update() #you will have to make your own tick