IB.reqTickByTickData()报错:意外关键字参数'handler'求助
解决IB TWS中reqTickByTickData()的handler参数报错问题
问题描述
调试Python代码时触发错误:
TypeError: IB.reqTickByTickData() got an unexpected keyword argument 'handler'
由于使用reqTickByTickData()而非reqMktData从IB TWS流式获取数据,无法通过ib.pendingTickersEvent += on_price_update分发实时数据,因此尝试直接在调用中传入handler参数:
ib.reqTickByTickData(contract, "Last", numberOfTicks=0, ignoreSize=True, handler=on_tick_update)
已确认数据分发逻辑:通过handler将数据传递至第一个函数,再在该函数内调用依赖实时数据的第二个函数。
解决提示
- 检查ib_insync版本差异:不同版本的
reqTickByTickData参数定义不同,早期版本可能不支持handler参数。建议升级至最新稳定版。 - 改用事件绑定方式:若当前版本不支持
handler,可通过绑定tickByTickEvent替代,示例代码:# 绑定回调事件 ib.tickByTickEvent += on_tick_update # 调用数据请求接口 ib.reqTickByTickData(contract, "Last", numberOfTicks=0, ignoreSize=True) - 校验回调函数签名:确保
on_tick_update的参数符合ib_insync要求,正确签名应为:def on_tick_update(tickByTick): # 处理逻辑 pass - 同步TWS API版本:确保TWS/IB Gateway的API版本与ib_insync库兼容,过低的API版本可能导致参数不支持。
内容的提问来源于stack exchange,提问作者Dimi
相关产品推荐
相关产品推荐

