You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:27:43