如何用Python通过Trader Workstation API获取AAPL财报日期时间
利用TWS API和WSH数据获取AAPL财报日期的实现方法
一、通过WSH扫描器获取AAPL财报日期
你拿到的XML里的WSH_NEXT_EARNINGS扫描代码正是用来抓取即将到来的财报数据的,结合TWS API的reqScannerSubscription方法,就能精准过滤出AAPL的财报信息。
具体实现代码
修正你原代码的缩进问题后,添加扫描订阅和结果处理的逻辑:
from ibapi.client import * from ibapi.wrapper import * import os port = 7496 class TestApp(EClient, EWrapper): def __init__(self): EClient.__init__(self, self) def nextValidId(self, orderId: int): # 初始化WSH财报扫描配置 scanner_sub = ScannerSubscription() scanner_sub.instrument = "STK" scanner_sub.locationCode = "STK.US" # 锁定美股市场 scanner_sub.scanCode = "WSH_NEXT_EARNINGS" # 复用XML里的扫描代码 # 添加过滤器:仅返回AAPL的数据 filter_options = [] filter_options.append(TagValue("symbol", "AAPL")) # 请求扫描订阅,指定返回财报日期列(对应XML中的colId=742) self.reqScannerSubscription( reqId=1, subscription=scanner_sub, scannerSubscriptionOptions=[], scannerSubscriptionFilterOptions=filter_options, column=["742"] ) def scannerData(self, reqId: int, rank: int, contractDetails: ContractDetails, distance: str, benchmark: str, projection: str, legsStr: str): # 打印合约基础信息 print(f"合约: {contractDetails.contract.symbol} - {contractDetails.longName}") def scannerDataFilter(self, reqId: int, value: str): # 输出AAPL的财报日期/时间 print(f"AAPL下一次财报日期/时间: {value}") def scannerEnd(self, reqId: int): # 扫描完成后断开连接 print("扫描结束") self.disconnect() # 保留原有的扫描参数存储方法(已修正缩进错误) def scannerParameters(self, xml): dir_path = "C:\\Temp\\Traders Academy" file_path = os.path.join(dir_path, "scanner.xml") with open(file_path, 'w') as file: file.write(xml) print("扫描参数已存储。") app = TestApp() app.connect("127.0.0.1", port, 1001) app.run()
代码关键点说明
scanner_sub.scanCode = "WSH_NEXT_EARNINGS":直接使用XML中定义的WSH财报扫描代码TagValue("symbol", "AAPL"):添加符号过滤器,避免返回无关股票的财报数据column=["742"]:指定返回XML中colId=742的列,也就是财报日期/时间字段scannerDataFilter方法会接收对应列的具体数值,即我们需要的财报信息
二、TWS API文档的替代方案
针对官方在线手册废弃的问题,可通过以下途径获取有效信息:
- 打开TWS客户端,进入
Help -> API -> API Reference:这是本地内置的最新API文档,包含所有方法、参数说明和示例 - 查看TWS安装目录下的
API/samples/Python文件夹:里面有大量官方实战代码,覆盖扫描器、行情订阅、订单操作等场景 - 参与IB官方API开发者社区:社区内有大量用户分享的实操案例和问题解决方案,能快速定位同类问题
内容的提问来源于stack exchange,提问作者user274610
相关产品推荐
相关产品推荐

