返回

如何将 IBKR API 展示组连接到 Jupyter 笔记本以增强数据分析

python

连接 IBKR API 展示组:通过 Jupyter 笔记本来访问数据

介绍

Interactive Brokers(IBKR)展示组是一种强大的工具,它允许交易者创建和管理自定义数据集。通过将 IBKR API 展示组连接到 Jupyter 笔记本,开发人员可以从 IBKR Trader Workstation (TWS) 访问和分析数据,从而做出更明智的交易决策。本文将分步指导您如何建立此连接,并提供一个演示性代码片段。

先决条件

在开始之前,您需要:

  • 已安装 Jupyter 笔记本
  • 已连接 IBKR TWS 账户的 IBKR API
  • 安装 ibapi 和 pandas 库

步骤

1. 导入库

在 Jupyter 笔记本中,导入必要的库:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
import pandas as pd

2. 创建 EWrapper 子类

EWrapper 子类将处理从 IBKR API 收到的事件和数据:

class MyWrapper(EWrapper):
    def __init__(self):
        self.data = []
        self.df = None

3. 定义 nextValidId 方法

此方法用于接收服务器分配的下一个有效订单 ID:

    def nextValidId(self, orderId:int):
        print("Setting nextValidOrderId: %d", orderId)
        self.nextValidOrderId = orderId
        self.start()

4. 定义 historicalData 方法

此方法用于处理历史数据请求的响应:

    def historicalData(self, reqId, bar):
        self.data.append(vars(bar));

5. 定义 historicalDataEnd 方法

此方法用于处理历史数据请求的结束:

    def historicalDataEnd(self, reqId: int, start: str, end: str):
        print("HistoricalDataEnd. ReqId:", reqId, "from", {start}, "to", {end})
        self.df = pd.DataFrame(self.data)
        self.df['date'] = pd.to_datetime(self.df['date'])
        self.df.set_index('date', inplace=True)

6. 连接到 IBKR API

使用 EClient 连接到 IBKR API:

app = EClient(wrap)
app.connect("127.0.0.1", 7496, clientId=123)

7. 发送请求以查询展示组

发送请求以获取所有可用展示组的列表:

app.queryDisplayGroups(reqId=19001)

8. 处理展示组列表响应

EWrapper 的 displayGroupList 方法将处理展示组列表的响应:

def displayGroupList(self, reqId: int, groups: str):
    print("DisplayGroupList. ReqId:", reqId, "Groups", groups)

9. 订阅展示组事件

订阅特定展示组的更新事件:

app.subscribeToGroupEvents(19002, 1)

10. 处理展示组更新响应

EWrapper 的 displayGroupUpdated 方法将处理展示组更新的响应:

def displayGroupUpdated(self, reqId: int, contractInfo: str):
    print("DisplayGroupUpdated. ReqId:", reqId, "ContractInfo:", contractInfo)

结论

通过将 IBKR API 展示组连接到 Jupyter 笔记本,交易者和开发人员可以访问和分析来自 IBKR TWS 的数据。这种连接提供了广泛的可能性,包括回溯测试策略、识别交易机会以及自动化交易流程。使用本文提供的步骤,您可以轻松建立此连接并开始利用 IBKR 展示组的强大功能。

常见问题解答

1. 什么是 IBKR 展示组?

展示组是交易者创建和管理自定义数据集的方法。它们可以包含来自不同来源的数据,例如市场数据、新闻和基本面数据。

2. 为什么将 IBKR 展示组连接到 Jupyter 笔记本?

通过连接到 Jupyter 笔记本,交易者和开发人员可以利用交互式数据分析工具,例如可视化和数据操作功能。

3. 我可以在 Jupyter 笔记本中执行哪些操作?

在 Jupyter 笔记本中,您可以查询展示组、提取数据、进行数据分析、创建可视化以及自动化交易流程。

4. 我需要哪些先决条件?

您需要安装 Jupyter 笔记本、IBKR API 和 ibapi 和 pandas 库。

5. 连接需要多长时间?

连接时间取决于 IBKR TWS 的可用性、网络速度和数据量。通常,连接可在几秒钟内完成。