请求指定合约新闻
指定合约新闻用于订阅某个标的相关的实时新闻标题。例如订阅 IBM 股票相关的新闻。
它使用普通行情接口 reqMktData(),关键是 genericTickList 写 "mdoff,292:BRFG+BRFUPDN" 这类新闻源配置。
from ibapi.contract import Contract
def ibm_stock() -> Contract: """IBM 股票合约,用于请求指定合约新闻标题。""" contract = Contract() contract.symbol = "IBM" contract.secType = "STK" contract.exchange = "SMART" contract.currency = "USD" return contractapp.reqMktData( 98101, ibm_stock(), "mdoff,292:BRFG+BRFUPDN", False, False, [],)| 参数 | 中文说明 |
|---|---|
98101 | 请求编号,后续 tickNews() 和 error() 会带回。 |
ibm_stock() | 要订阅新闻的合约。 |
"mdoff,292:BRFG+BRFUPDN" | 关闭普通行情字段,并从指定新闻源请求新闻标题 tick。 |
第一个 False | snapshot=False,新闻标题是订阅式数据。 |
第二个 False | regulatorySnapshot=False,这里不请求监管快照。 |
[] | 额外选项列表,普通场景为空。 |
CONTRACT_NEWS_ROWS=0ERROR=reqId=98101;code=10168;msg=请求的市场数据没有订阅。延迟市场数据未启用。ERROR=reqId=98101;code=300;msg=无法使用tickerId找到EId::98101示例账户历史新闻可用,但指定合约实时新闻标题没有订阅权限。遇到这个结果时,代码结构不一定错,先检查市场数据和新闻标题订阅权限。
app.cancelMktData(98101)如果请求没有真正建立,取消时可能看到 300。这通常表示 TWS 没有找到这个 tickerId 对应的活动订阅。