跳转到内容

请求新闻提供商

reqNewsProviders() 用来请求账户可用的新闻源列表。这个接口不需要传 reqId,TWS 会通过 newsProviders() 回调返回列表。

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

app.reqNewsProviders()

调用前需要完成 TWS socket 连接,并启动 app.run() 事件循环。

from __future__ import annotations
import threading
from ibapi.client import EClient
from 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=True
PROVIDER_COUNT=3
PROVIDER=code=BRFG;name=Briefing.com General Market Columns
PROVIDER=code=BRFUPDN;name=Briefing.com Analyst Actions
PROVIDER=code=DJNL;name=Dow Jones Newsletters

如果没有返回 provider,后续不要急着调历史新闻或正文接口,先检查 TWS 是否登录、API 是否启用,以及账户是否有新闻订阅。