跳转到内容

接收实时新闻标题

实时新闻标题通过 tickNews() 回调返回。它只返回标题和文章 ID,不返回正文。

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

def tickNews(
self,
tickerId: int,
timeStamp: int,
providerCode: str,
articleId: str,
headline: str,
extraData: str,
) -> None:
...
字段中文说明
tickerId请求编号,对应 reqMktData() 的第一个参数。
timeStamp新闻时间戳。
providerCode新闻源代码,例如 BRFGBRFUPDN
articleId文章 ID,后续请求正文时要用。
headline新闻标题。
extraData额外数据,是否有内容取决于新闻源。

timeStamp 通常是 Unix 时间戳,展示给用户前应转换成目标时区的可读时间。

def tickNews(self, tickerId, timeStamp, providerCode, articleId, headline, extraData) -> None:
print({
"请求编号": tickerId,
"新闻源": providerCode,
"文章ID": articleId,
"标题": headline,
})

如果用户点击标题查看详情,再调用:

app.reqNewsArticle(98104, providerCode, articleId, [])

实时新闻标题订阅可能长时间没有推送。判断问题时按这个顺序:

检查项说明
error() 是否返回权限错误例如 10168,说明订阅不足。
reqNewsProviders() 是否有新闻源没有 provider 时先处理权限。
是否使用了 "mdoff,292"没有 292 不会收到新闻标题 tick。
是否等待足够时间实时新闻不是立刻必有数据。

示例中历史新闻和正文可用,但实时标题没有推送:

CONTRACT_NEWS_ROWS=0
BROADTAPE_NEWS_ROWS=0
ERROR=reqId=98101;code=10168;msg=请求的市场数据没有订阅。延迟市场数据未启用。

这类结果可以提示为“订阅已尝试,但没有实时标题推送或权限不足”。