mcpField
I
ibkr

ibkr

github.com/starchild-ai-agent其他3075 次安装1 周前更新
代码仓库

关于 ibkr

ibkr 是通过本地运行的 Interactive Brokers TWS 或 IB Gateway 查询账户数据和下单的命令行技能。默认使用模拟交易配置,凭据保留在网关中,不传给技能。

主要功能

  1. 01查询账户和持仓
  2. 02查看订单与成交记录
  3. 03获取行情和历史价格
  4. 04提交或取消订单
  5. 05配置模拟或实盘模式

适用场景

  1. 01核对账户信息和持仓
  2. 02查看未完成订单或成交
  3. 03获取报价和历史行情
  4. 04提交或取消经纪账户订单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/starchild-ai-agent/official-skills --skill ibkr

安装后在 Claude Code 中输入/ibkr确认已加载。

附带文件scripts/ibkr_cli.py

详细介绍

这是什么 — 请先阅读

🖥️ 本地网关代理。 IBKR 没有基于密钥的公共 API。你需要在一台机器上运行 Trader Workstation (TWS) 或更轻量的 IB Gateway,登录并启用 API 套接字,然后此 CLI 会通过本地套接字连接。你的 IBKR 凭据保存在 TWS 中,不会传给此技能。

⚠️ 默认情况下,这无法在 Starchild 容器中使用,因为 TWS 运行在你的计算机上,而容器中的 127.0.0.1 指向容器本身。有两种使用方式:

  1. 本地运行 — 在自己的计算机上运行 TWS/Gateway 和此脚本。(最简单)
  2. 桥接网络 — 在容器可访问的主机上运行 IB Gateway,将容器的 IP 添加到 TWS 的“Trusted IPs”,并设置 IBKR_HOST/IBKR_PORT。网络和安全由你负责;切勿将 API 套接字暴露到开放互联网。

如果 status 提示套接字未在监听,原因就在这里。

设置 TWS / IB Gateway(一次性)

  1. 从 interactivebrokers.com → Trading → Platforms 下载 TWS 或 IB Gateway。IB Gateway 更轻量,也更适合无头运行;TWS 则提供完整的图形界面。
  2. 登录。模拟交易: IBKR 为每个账户提供免费的模拟交易登录(账户 ID 以 DU 开头);测试时请登录模拟交易会话。
  3. 启用 API:进入 TWS → File → Global Configuration → API → Settings,勾选 "Enable ActiveX and Socket Clients"。如需交易,请不要勾选 "Read-Only API"(只读模式会阻止下单)。记下 Socket port。
  4. 默认端口:7497 = TWS 模拟交易,7496 = TWS 实盘,4002 = IB Gateway 模拟交易,4001 = IB Gateway 实盘。
  5. 市场数据需要账户订阅相应的数据服务,否则行情或 K 线数据会为空。

配置(.env)

无需密钥,只需指定网关位置。如果使用非默认值,请通过安全输入方式获取。

变量必需备注
IBKR_HOST否默认为 127.0.0.1
IBKR_PORT否覆盖配置文件默认端口(7497 模拟交易 / 7496 实盘)
IBKR_CLIENT_ID否API 客户端 ID,默认为 1(并发连接时请使用不同的 ID)
IBKR_ACCOUNT否指定账户代码(例如 DU1234567);留空 = 第一个受管理的账户

模拟账户以 DU 开头,实盘账户以 U 开头。--profile paper 可防止意外连接到实盘账户。

用法

首次运行时执行 pip install ib_async。输出为 JSON。默认配置文件为 paper(端口 7497)。

python skills/ibkr/scripts/ibkr_cli.py status                  # checks socket + lists managed accounts
python skills/ibkr/scripts/ibkr_cli.py account
python skills/ibkr/scripts/ibkr_cli.py positions
python skills/ibkr/scripts/ibkr_cli.py orders [--executions]
python skills/ibkr/scripts/ibkr_cli.py quote --symbol AAPL
python skills/ibkr/scripts/ibkr_cli.py history --symbol AAPL --duration "30 D" --bar-size "1 day"
# place (paper): qty in units; market or limit; contract defaults STK/SMART/USD
python skills/ibkr/scripts/ibkr_cli.py place --symbol AAPL --side buy --qty 10 --type limit --limit-price 180 --tif day
python skills/ibkr/scripts/ibkr_cli.py cancel --order-id <numeric-id>
# live (real money): TWS on live port + --confirm-live
python skills/ibkr/scripts/ibkr_cli.py --profile live --confirm-live place --symbol AAPL --side buy --qty 1

非美国市场或非股票类工具:请传入 --exchange、--currency、--sec-type(例如,外汇可使用 --sec-type CASH --symbol EUR --currency USD --exchange IDEALPRO)。history 使用 IB 的 --duration("30 D"、"1 Y")和 --bar-size("1 day"、"1 hour"、"5 mins")。

注意事项

  • “socket not listening” / connection refused = TWS 未运行、未登录、运行在另一台机器上、端口错误或 API 套接字未启用。请重新阅读设置步骤 3。
  • 如需下单,TWS 设置中的 "Read-Only API" 必须关闭,否则即使使用 --confirm-live,下单也会被静默阻止。
  • cancel 需要数字形式的 IBKR 订单 ID,且只能取消当前会话/账户中仍处于未结状态的订单。
  • 如果账户未订阅相应的市场数据服务,行情/历史数据将为空。
  • 如果 TWS 提示客户端 ID 已在使用,请使用唯一的 IBKR_CLIENT_ID。

评论

支持 Markdown