跳转到内容

请求历史新闻

reqHistoricalNews() 用于查询指定合约的历史新闻标题。它需要合约 ID,也就是 conId,而不是股票代码字符串。

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

app.reqHistoricalNews(
reqId,
conId,
providerCodes,
startDateTime,
endDateTime,
totalResults,
historicalNewsOptions,
)
参数中文说明
reqId请求编号。
conId合约 ID,例如 IBM 示例使用 8314
providerCodes新闻源代码,多个来源用 + 连接。
startDateTime开始时间,空字符串表示不指定。
endDateTime结束时间,空字符串表示不指定。
totalResults最多返回多少条标题。
historicalNewsOptions额外选项,普通场景传 []
app.reqHistoricalNews(
98103,
8314,
"BRFG+BRFUPDN",
"",
"",
5,
[],
)

如果你只想从最近新闻开始往前查,可以把 startDateTimeendDateTime 都留空。

如果要限制区间,可以按 TWS 支持的日期时间格式传入字符串,例如 20260601 09:30:00 这类日期加时间格式。新手建议先留空跑通,再逐步增加时间条件;否则返回 0 行时很难判断是时间范围太窄、新闻源不可用,还是合约本身没有新闻。

HISTORICAL_NEWS_END=True
HISTORICAL_NEWS_ROWS=5

这说明请求已完成,并返回了 5 条历史新闻标题。

问题处理方式
conId 写错先通过合约详情接口确认 conId
providerCodes 不可用先调用 reqNewsProviders()
返回 0 行换新闻源、放宽时间范围,或确认该合约是否有相关新闻。

reqHistoricalNews() 不接收完整 Contract 对象,只接收 conId。如果你的界面让用户输入股票代码,程序应该先用 reqContractDetails() 找到目标合约,再把返回的 contract.conId 传给历史新闻接口。