WSH 元数据总览
Wall Street Horizon,简称 WSH,是 IBKR 提供的公司事件数据源,可用于查询财报、分红、会议、拆股等事件日历信息。TWS API 里应先请求 WSH 元数据,了解可用的事件类型和过滤条件,再请求具体事件数据。
官方参考:
| 接口 | 作用 |
|---|---|
reqWshMetaData(reqId) | 请求 WSH 元数据。 |
wshMetaData(reqId, dataJson) | 接收 WSH 元数据 JSON。 |
cancelWshMetaData(reqId) | 取消元数据请求。 |
为什么先请求元数据
Section titled “为什么先请求元数据”WSH 事件请求里有 filter 字段。这个字段不适合随便猜,正确做法是先读取元数据,知道服务端支持哪些事件类型、国家、日期和分类,再构造事件数据请求。
官方说明里还有一个重要限制:每个 TWS API 会话应先请求一次 WSH 元数据,再请求事件数据;并且 WSH 请求不适合并发堆叠,前一个请求应成功、失败或取消后再发下一个。
如果账户没有 WSH 或新闻推送相关权限,可能会收到:
ERROR=reqId=98701;code=10276;msg=不允许新闻推送。这说明 Socket 连接本身是通的,请求也已经发到 TWS,但账户权限不允许返回 WSH 数据。程序应把 10276 翻译成清楚的中文提示,而不是让用户误以为 Python 代码、端口或合约写错了。
推荐使用流程
Section titled “推荐使用流程”- 连接 TWS,并等待
nextValidId()。 - 调用
reqWshMetaData(reqId)。 - 如果收到
wshMetaData(),解析dataJson。 - 如果收到
10276,提示用户检查 WSH / 新闻推送权限。 - 根据元数据构造
WshEventData。 - 调用
reqWshEventData()请求事件数据。