请求新闻提供商
reqNewsProviders() 用来请求账户可用的新闻源列表。这个接口不需要传 reqId,TWS 会通过 newsProviders() 回调返回列表。
app.reqNewsProviders()调用前需要完成 TWS socket 连接,并启动 app.run() 事件循环。
from __future__ import annotations
import threading
from ibapi.client import EClientfrom ibapi.wrapper import EWrapper
class NewsProviderApp(EWrapper, EClient): def __init__(self) -> None: EClient.__init__(self, self) self.ready = threading.Event() self.done = threading.Event()
def nextValidId(self, orderId: int) -> None: self.ready.set()
def newsProviders(self, newsProviders) -> None: for provider in newsProviders: print(provider.code, provider.name) self.done.set()
app = NewsProviderApp()app.connect("127.0.0.1", 7497, clientId=98100)threading.Thread(target=app.run, daemon=True).start()
if app.ready.wait(10): app.reqNewsProviders()
app.done.wait(10)app.disconnect()PROVIDERS_RECEIVED=TruePROVIDER_COUNT=3PROVIDER=code=BRFG;name=Briefing.com General Market ColumnsPROVIDER=code=BRFUPDN;name=Briefing.com Analyst ActionsPROVIDER=code=DJNL;name=Dow Jones Newsletters如果没有返回 provider,后续不要急着调历史新闻或正文接口,先检查 TWS 是否登录、API 是否启用,以及账户是否有新闻订阅。