系统消息代码
系统消息代码用于告诉程序 TWS 和 IBKR 后端服务的连接状态。它们经常出现在 error() 回调里,但大多数不是失败。
常见系统信息码
Section titled “常见系统信息码”| 代码 | 常见含义 | 新手解释 |
|---|---|---|
2103 | 行情服务器连接断开 | 行情服务暂时不可用,需要等待恢复或重连。 |
2104 | 行情服务器连接正常 | 正常信息,通常不用处理。 |
2105 | 历史数据服务器连接断开 | 历史数据请求可能暂时失败。 |
2106 | 历史数据服务器连接正常 | 正常信息,通常不用处理。 |
2107 | 历史数据服务空闲 | 不代表错误。 |
2108 | 行情数据服务空闲 | 不代表错误。 |
2158 | 安全定义数据服务器连接正常 | 合约定义服务正常。 |
这些消息常在刚连接 TWS 后集中出现。程序不应因为收到 2104 或 2106 就退出。
INFO_CODES = {2103, 2104, 2105, 2106, 2107, 2108, 2158}
def error(self, reqId, errorTime, errorCode, errorString, advancedOrderRejectJson=""): if errorCode in INFO_CODES: print("系统信息:", errorCode, errorString) return
print("请求错误:", reqId, errorCode, errorString)过滤信息码不是忽略它们,而是把它们放进正确的日志级别。2103、2105 这类断开消息仍然值得记录,因为它们会影响接下来的行情或历史数据请求。
参考连接样本
Section titled “参考连接样本”TWS 模拟账户连接成功后,收到的信息码如下:
INFO_CODES=2104,2104,2104,2104,2106,2106,2158这说明行情服务、历史数据服务和安全定义服务都向 API 报告了可用状态。随后如果某个请求返回错误,应优先排查该请求本身,而不是先怀疑 TWS 连接已经断开。
| 日志级别 | 适合记录的代码 |
|---|---|
INFO | 2104、2106、2107、2108、2158 |
WARN | 2103、2105 |
ERROR | 合约、行情、订单等请求级失败 |
如果做面向用户的调试工具,可以把系统消息折叠显示,只把请求级错误高亮给用户。