跳转到内容

WSH 元数据总览

Wall Street Horizon,简称 WSH,是 IBKR 提供的公司事件数据源,可用于查询财报、分红、会议、拆股等事件日历信息。TWS API 里应先请求 WSH 元数据,了解可用的事件类型和过滤条件,再请求具体事件数据。

官方参考:

接口作用
reqWshMetaData(reqId)请求 WSH 元数据。
wshMetaData(reqId, dataJson)接收 WSH 元数据 JSON。
cancelWshMetaData(reqId)取消元数据请求。

WSH 事件请求里有 filter 字段。这个字段不适合随便猜,正确做法是先读取元数据,知道服务端支持哪些事件类型、国家、日期和分类,再构造事件数据请求。

官方说明里还有一个重要限制:每个 TWS API 会话应先请求一次 WSH 元数据,再请求事件数据;并且 WSH 请求不适合并发堆叠,前一个请求应成功、失败或取消后再发下一个。

如果账户没有 WSH 或新闻推送相关权限,可能会收到:

ERROR=reqId=98701;code=10276;msg=不允许新闻推送。

这说明 Socket 连接本身是通的,请求也已经发到 TWS,但账户权限不允许返回 WSH 数据。程序应把 10276 翻译成清楚的中文提示,而不是让用户误以为 Python 代码、端口或合约写错了。

  1. 连接 TWS,并等待 nextValidId()
  2. 调用 reqWshMetaData(reqId)
  3. 如果收到 wshMetaData(),解析 dataJson
  4. 如果收到 10276,提示用户检查 WSH / 新闻推送权限。
  5. 根据元数据构造 WshEventData
  6. 调用 reqWshEventData() 请求事件数据。