从IB官方API转ib_insync后,如何实现类似的错误处理?
在ib_insync中实现自定义错误处理逻辑
ib_insync 通过事件订阅的方式处理错误,你可以利用 IB 类的 errorEvent 事件来实现和官方API一致的错误处理逻辑,具体实现如下:
from ib_insync import IB # 定义无需关注的错误码 good_errors = (2104, 2106, 2158) def handle_error(req_id, error_code, error_string, contract): # contract 是 ib_insync 额外提供的参数,若不需要可忽略 if error_code in (502, 504): print("ERROR: 连接失败 - 检查TWS套接字") exit() elif error_code not in good_errors: print(f"Error {req_id} {error_code} {error_string}") # 按需取消注释执行断开连接操作 # ib.disconnect() # 初始化IB实例并订阅错误事件 ib = IB() ib.errorEvent += handle_error # 建立连接 ib.connect('127.0.0.1', 7497, clientId=1)
说明:
- ib_insync 的错误回调函数比官方API多了一个
contract参数,用于关联错误对应的合约,若不需要可以在函数定义中省略该参数,或者用*args接收多余参数。 - 订阅事件时使用
+=操作符,支持绑定多个错误处理函数。
内容的提问来源于stack exchange,提问作者TreKar Chrome
相关产品推荐
相关产品推荐

