请求历史新闻
reqHistoricalNews() 用于查询指定合约的历史新闻标题。它需要合约 ID,也就是 conId,而不是股票代码字符串。
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, [],)如果你只想从最近新闻开始往前查,可以把 startDateTime 和 endDateTime 都留空。
如果要限制区间,可以按 TWS 支持的日期时间格式传入字符串,例如 20260601 09:30:00 这类日期加时间格式。新手建议先留空跑通,再逐步增加时间条件;否则返回 0 行时很难判断是时间范围太窄、新闻源不可用,还是合约本身没有新闻。
HISTORICAL_NEWS_END=TrueHISTORICAL_NEWS_ROWS=5这说明请求已完成,并返回了 5 条历史新闻标题。
| 问题 | 处理方式 |
|---|---|
conId 写错 | 先通过合约详情接口确认 conId。 |
providerCodes 不可用 | 先调用 reqNewsProviders()。 |
| 返回 0 行 | 换新闻源、放宽时间范围,或确认该合约是否有相关新闻。 |
和 conId 的关系
Section titled “和 conId 的关系”reqHistoricalNews() 不接收完整 Contract 对象,只接收 conId。如果你的界面让用户输入股票代码,程序应该先用 reqContractDetails() 找到目标合约,再把返回的 contract.conId 传给历史新闻接口。