TypeError:IB.reqTickByTickData() 得到意外的关键字参数“handler”

问题描述 投票:0回答:1

在 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() 调用的第一个函数在此处输入图像描述,然后我调用第二个函数在此处输入图像描述。这就是全部。有人遇到过同样的问题吗?任何提示将不胜感激。预先感谢。

python visual-studio-code interactive-brokers real-time-data tws
1个回答
0
投票

您无需指定处理程序。 您必须使用编写的 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
© www.soinside.com 2019 - 2024. All rights reserved.