跳转到内容

Flex 报表服务

Flex Web Service 是 IBKR 用来生成和下载报表的 HTTP 接口。它适合拉取已经配置好的活动报表、成交记录、流水、持仓、现金变动和审计数据。

它不是实时交易接口,也不是实时行情接口。如果你的目标是实时下单、监听订单状态或请求历史 K 线,应优先看 TWS API 或 Web API。

场景是否适合原因
下载日终活动报表适合Flex 本来就是报表系统。
拉取成交、流水、费用、现金变动适合可以在 Flex Query 里选择字段。
对账、审计、财务系统同步适合报表结构稳定,适合批处理。
实时行情不适合它不是行情流接口。
实时下单不适合它不能替代 placeOrder() 或订单 endpoint。
高频轮询账户变化不适合报表数据不适合秒级轮询。

简单说:Flex Web Service 更像“自动下载报表”,不是“实时交易 API”。

官方 Flex 流程通常分成两步:

  1. 在 Client Portal 里创建 Flex Query,选择要导出的报表类型和字段。
  2. 程序调用 Flex Web Service,先请求生成报表,再用返回的 reference code 下载报表内容。

典型链路可以这样理解:

Client Portal 中配置 Flex Query
获得 query id 和 token
调用 SendRequest 生成报表
拿到 reference code
调用 GetStatement 下载报表

这和 TWS API 的请求/回调模型完全不同。Flex 是 HTTP 报表请求,TWS API 是 Socket 连接和回调消息。

字段中文解释注意点
t / tokenFlex Web Service token,用来授权请求。不要写进前端页面或公开仓库。
q / query id在 Client Portal 中创建的 Flex Query ID。不同报表配置会有不同 ID。
v / versionFlex Web Service 版本参数。按官方文档当前要求填写。
reference codeSendRequest 返回的报表引用码。第二步用它调用 GetStatement
report format报表格式,例如 XML。解析时要按实际格式处理。

新手最容易误解的是:Flex 请求不是“随便传一个账户号就能拿所有数据”。你需要先在 Client Portal 配置好 Flex Query,并拿到对应 token 和 query id。

下面是结构示意,不直接作为可运行代码使用。真实请求前,需要先在自己的 IBKR Client Portal 中创建 Flex Query 并取得 token。

SendRequest:
https://ndcdyn.interactivebrokers.com/AccountManagement/FlexWebService/SendRequest
?t=<你的 Flex Token>
&q=<你的 Query ID>
&v=3

如果请求成功,服务会返回一个 reference code。然后再请求:

GetStatement:
https://ndcdyn.interactivebrokers.com/AccountManagement/FlexWebService/GetStatement
?t=<你的 Flex Token>
&q=<Reference Code>
&v=3

这里第二步的 q 不再是原始 Query ID,而是第一步返回的 reference code。这个细节很容易写错。

对比项Flex Web ServiceTWS API
主要用途报表、对账、流水、审计行情、账户、订单、合约、实时回调
协议HTTP 请求TCP Socket
前置配置Client Portal 创建 Flex QueryTWS / IB Gateway 登录并开启 API
返回形式报表文件或 XML 内容回调函数持续返回数据
实时性不适合实时交易适合实时交易和行情订阅
下单能力

如果你只需要每天同步成交和费用,Flex 很合适。如果你要写策略、下单、撤单、看订单状态,Flex 不合适。

问题常见原因排查方向
请求没有数据Flex Query 没选对应字段或日期范围。回到 Client Portal 检查 Query 配置。
token 无效token 复制错误、过期或权限不对。重新生成或确认 Flex Web Service 权限。
第二步下载失败把 Query ID 当成 reference code 使用。GetStatement 要用第一步返回的 reference code。
数据不是实时的Flex 本来不是实时接口。实时需求改用 TWS API 或 Web API。
解析失败XML/CSV 格式和代码解析逻辑不匹配。先保存原始报表,再按实际字段解析。

选择 Flex Web Service 的典型情况:

  • 每天自动下载成交记录。
  • 把 IBKR 活动报表导入自己的财务或对账系统。
  • 需要审计流水、费用、现金变动和历史记录。
  • 不需要实时行情或实时下单。

不要选择 Flex 的情况:

  • 你要实时交易。
  • 你要订阅行情。
  • 你要监听订单状态。
  • 你要在网页里做即时调试。
  • 你还没有在 Client Portal 配置 Flex Query。

官方 Flex Web Service 文档说明,用户需要先配置 Flex Query,再通过 SendRequest 请求生成报表,并使用返回的 reference code 调用 GetStatement 下载报表。官方也将 Flex 放在报表和账户数据方向,而不是实时交易接口方向。

官方入口:Flex Web Service