跳转到内容

请求 BroadTape 新闻

BroadTape 新闻不是绑定某一只股票,而是订阅某个新闻源的广泛新闻流。它需要构造 secType="NEWS" 的新闻合约。

官方参考:IBKR Campus - TWS API 文档

from ibapi.contract import Contract
def benzinga_broadtape_news() -> Contract:
"""Benzinga BroadTape 新闻合约。"""
contract = Contract()
contract.symbol = "BZ:BZ_ALL"
contract.secType = "NEWS"
contract.exchange = "BZ"
return contract

不同新闻源的 symbolexchange 不同。TWS 返回的有效新闻源提示中可能包含 BRFGBRFUPDNDJNLBZDJTOP 等 code,但账户实际可用列表仍以 reqNewsProviders() 为准。

app.reqMktData(
98102,
benzinga_broadtape_news(),
"mdoff,292",
False,
False,
[],
)
BROADTAPE_NEWS_ROWS=0

本次请求没有返回 BroadTape 标题,也没有再出现无效新闻源错误。实时新闻标题是否推送,取决于新闻源权限、市场状态和当时是否有新闻。

项目指定合约新闻BroadTape 新闻
合约类型股票、期货、期权等普通合约secType="NEWS"
新闻范围某个标的相关新闻某个新闻源的广泛新闻流
genericTickList常见 "mdoff,292:BRFG+BRFUPDN"常见 "mdoff,292"
常见问题可能受标的行情权限影响新闻源、新闻合约写法和权限更敏感

如果 Contract.exchange 写错,TWS 可能返回类似:

ERROR code=321;msg=输入的新闻来源无效

遇到这种错误,先重新请求 reqNewsProviders(),再检查官方示例和 TWS 返回的有效来源列表。