跳转到内容

API 日志

API 日志记录的是 API 程序和 TWS / IB Gateway 之间的通信消息。它适合排查连接、行情、订单、限频和错误码问题,因为它比界面提示更接近真实请求。

它不是默认开启的。需要在 TWS 或 IB Gateway 的 API 设置里勾选 Create API message log file,并在问题复现前设置好日志级别。

TWS 的入口:

Global Configuration / 全局配置 -> API -> Settings / 设置

TWS API 设置页面,箭头指向 Create API message log file 日志开关

操作步骤:

  1. 打开 TWS。
  2. 进入 Global Configuration / 全局配置
  3. 左侧选择 API -> Settings / 设置
  4. 勾选 Create API message log file / 创建 API 消息日志文件
  5. 需要排查复杂问题时,再考虑勾选 Include market data in API log file / 在 API 日志文件中包含市场数据
  6. 点击 Apply / 应用,再点击 OK / 确定

IB Gateway 的入口类似:进入 Configure -> Settings -> API -> Settings,找到同名或近似名称的日志选项。

英文字段中文意思说明
Create API message log file创建 API 消息日志文件记录 API 程序和 TWS / Gateway 之间的请求、回调和错误消息。
Include market data in API log file在 API 日志中包含行情数据会让日志包含更多行情内容,文件可能明显变大。
Logging Level日志级别级别越详细,排查信息越多,但日志也越大。
clientId客户端编号日志排查时常用来区分不同 API 程序。

日常开发不建议长期打开过多日志。更好的做法是:先让问题稳定复现,再打开日志,复现一次后保存日志并关闭过高日志级别。

API 日志文件名通常类似:

api.[clientId].[day].log

例如:

api.910.Thu.log
片段中文解释
api这是 API 消息日志,不是完整 TWS 平台日志。
910API 程序连接时使用的 clientId
Thu星期几生成的日志文件。
.log本地日志文件扩展名。

如果你同时运行多个脚本,建议给每个脚本固定不同的 clientId。这样日志里更容易看出是哪一个程序发出的请求。

Include market data in API log file 对排查行情问题有帮助,但不适合长期打开。

场景建议
只排查连接是否成功不需要打开行情日志。
排查行情字段、订阅权限、tick 返回异常可以短时间打开。
长期运行行情程序不建议一直打开,日志会变大。
准备公开展示界面或粘贴日志先隐藏账户、订单、路径和敏感字段。

行情日志可能包含合约、请求参数、错误信息和部分返回内容。公开文档、论坛提问或发给别人排查前,都应该先脱敏。

API 日志通常配合 Python 程序输出一起看。重点不是把日志整份读完,而是按时间线找到这几类信息:

线索作用
clientId区分哪个 API 客户端发出的消息。
reqId把请求和回调对应起来。
orderId排查下单、改单、撤单问题。
错误码error() 回调里的错误码互相印证。
合约字段检查 symbolsecTypeexchangecurrency 是否填错。

如果只是连接失败,先确认 TWS 是否开启 Socket、端口是否正确、是否限制为同机连接。日志只能帮助定位原因,不能替代这些基础配置检查。