作者:yunjinqi 类别:
日期:2022-01-03 22:25:19
阅读:1777 次 消耗积分:0 分
新闻
API 新闻需要特定于 API 的新闻订阅;TWS 中的大多数新闻服务在 API 中也不可用。从TWS v966开始,默认情况下,帐户中启用了三个API新闻服务,并且可以从API获得。它们是:
所有TWS版本还提供四项额外的新闻服务,这些服务需要首先在帐户管理中进行特定的API订阅。它们的数据费用与仅在TWS中订阅相同新闻的数据费用不同。与所有订阅一样,它们仅适用于进行订阅时所使用的特定TWS用户名:
Briefing Trader (BRF)
Benzinga Pro (BZ)
Fly on the Wall(飞)
处理新闻的 API 函数能够查询可用的新闻,实时订阅新闻以在发布时接收标题,请求特定的新闻文章,并返回缓存在系统中的新闻报道的历史列表。
检查订阅的新闻来源
在帐户中添加或删除 API 新闻订阅是通过帐户管理完成的。从API中,可以使用 IBApi::EClient::reqNewsProviders. 函数检索当前订阅的新闻源。请注意,此功能仅在 API v973.02 中可用。
self.reqNewsProviders()
可用订阅的新闻源列表将返回到IBApi::EWrapper::newsProviders函数
def newsProviders(self, newsProviders: ListOfNewsProviders):
print("NewsProviders: ")
for provider in newsProviders:
print("NewsProvider.", provider)
合约特定新闻
有两种方法可以通过API订阅实时新闻标题。您可以请求合同特定新闻或BroadTape新闻。另见BroadTape新闻列表
**重要提示:**为了通过TWS API获取新闻源,您需要通过您的帐户管理获取相关的API特定订阅。
当调用IBApi.EClient.reqMktData时,对于特定的IBApi.Contract,您将遵循与任何其他基本合约相同的格式约定。新闻来源由通用TickList标识。
注意:如果用户名尚未添加相应的 API 新闻订阅,则将返回错误消息"无效的刻度线类型"。
# Without the API news subscription this will generate an "invalid tick type" errorself.reqMktData(1005, ContractSamples.USStockAtSmart(), "mdoff,292:BRFG", False, False, [])self.reqMktData(1006, ContractSamples.USStockAtSmart(), "mdoff,292:BRFG+DJNL", False, False, [])self.reqMktData(1007, ContractSamples.USStockAtSmart(), "mdoff,292:BRFUPDN", False, False, [])self.reqMktData(1008, ContractSamples.USStockAtSmart(), "mdoff,292:DJ-RT", False, False, [])
BroadTape News
对于BroadTape News,您可以为特定新闻源指定IBApi.Contract。这由符号和交换唯一标识。可以通过IBApi.EClientSocket.reqContractDetails请求轻松获取工具的符号。
新闻合约示例
Briefing Trader
contract = Contract()contract.symbol = "BRF:BRF_ALL"contract.secType = "NEWS"contract.exchange = "BRF"
Benzinga Pro
contract = Contract()contract.symbol = "BZ:BZ_ALL"contract.secType = "NEWS"contract.exchange = "BZ"
Fly on the Wall
contract = Contract()contract.symbol = "FLY:FLY_ALL"contract.secType = "NEWS"contract.exchange = "FLY"
然后,您可以调用IBApi.EClient.reqMktData来获取广泛的 tape新闻源。
self.reqMktData(1009, ContractSamples.BTbroadtapeNewsFeed(), "mdoff,292", False, False, [])self.reqMktData(1010, ContractSamples.BZbroadtapeNewsFeed(), "mdoff,292", False, False, [])self.reqMktData(1011, ContractSamples.FLYbroadtapeNewsFeed(), "mdoff,292", False, False, [])
**重要:**对于Briefing Trader,通过API的 live head lines仅直接从 Briefing.com 提供Briefing Trader的订阅者通过API访问订阅live head lines。如需了解更多信息并提交 API 应用权限,请直接通过dbeasley@briefing.com.联系 Briefing.com
生成的新闻标题将返回到具有新闻标题、时间戳和文章 ID 的 IBApi::EWrapper::tickNews 函数。文章 ID 可用于使用下面的函数IBApi::EClient::reqNewsArticle检索新闻文章的正文。
def tickNews(self, tickerId: int, timeStamp: int, providerCode: str,
articleId: str, headline: str, extraData: str):
print("TickNews. TickerId:", tickerId, "TimeStamp:", timeStamp,
"ProviderCode:", providerCode, "ArticleId:", articleId,
"Headline:", headline, "ExtraData:", extraData)
历史新闻标题
通过适当的 API 新闻订阅,可以使用从 API v973.02 开始的 IBApi::EClient::reqHistoricalNews 函数从 API 请求历史新闻标题。由此产生的标题将返回到IBApi::EWrapper::historicalNews.
self.reqHistoricalNews(10003, 8314, "BRFG", "", "", 10, [])
请求新闻文章
使用上述函数之一请求新闻标题后,可以通过调用从 API v973.02 开始的函数 IBApi::EClient::reqNewsArticle 来请求带有返回的文章 ID 的新闻文章的正文。新闻文章的正文返回到 IBApi::EWrapper::newsArticle.。
self.reqNewsArticle(10002,"BRFG", "BRFG$04fb9da2", [])
IB公告
IB不时发送重要的新闻公告,可以通过TWSAPI通过IBApi.EClient.reqNewsBulletins访问。
self.reqNewsBulletins(True)
每当有新的公告时,公告都会通过IBApi.EWrapper.updateNewsBulletin提供:
class TestWrapper(wrapper.EWrapper):# ...
def updateNewsBulletin(self, msgId: int, msgType: int, newsMessage: str,
originExch: str):
super().updateNewsBulletin(msgId, msgType, newsMessage, originExch)
print("News Bulletins. MsgId:", msgId, "Type:", msgType, "Message:", newsMessage,
"Exchange of Origin: ", originExch)
要停止接收公告,您需要取消订阅:
self.cancelNewsBulletins()
TWS API相关的教程
【TWS API使用教程1】—如何在自己创建的client和TWS之间创建一个连接,并请求当前的时间
【TWS API使用教程2】—如何使用 TWS API在ubuntu和windows上分别设置contract、获取contract详细信息、设置order、下单、获取持仓信息、获取账户信息
【TWS API使用教程3】—如何使用TWS API从盈透证券中设置contract及获取contract的信息?
【TWS API使用教程4】—如何使用TWS API在盈透证券中设置order?
【TWS API使用教程5】—如何使用TWS API在盈透证券中下单(place order)、获取订单信息、获取持仓、获取账户汇总信息?
【TWS API使用教程6】—如何使用TWS API在盈透证券中获取数据?
【TWS API 使用教程7】如何使用TWS API 从盈透证券中筛选满足一定条件的contract?
【TWS API 使用教程8】一个基于TWS API的简单的程序化策略