内置连接器

📎 引用文件

本文引用的文件 - agent/src/trading/connectors/binance/sdk.py - agent/src/trading/connectors/futu/sdk.py - agent/src/trading/connectors/longbridge/sdk.py - agent/src/trading/connectors/ibkr/local.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与重试
  8. 故障排查指南
  9. 结论
  10. 附录:配置与使用示例

简介

本章节面向 Vibe-Trading 的内置券商/数据连接器,聚焦 Binance(加密货币现货)、富途(Futu,本地 OpenD)、长桥(Longbridge,OpenAPI)和盈透(IBKR,本地 TWS/IB Gateway)四大连接器的实现细节。文档将说明各连接器的认证方式、API 限制、功能差异、参数配置、错误处理、性能优化策略与重试机制,并给出常见连接问题与调试技巧,以及不同市场的特殊处理方案。

项目结构

Vibe-Trading 的交易连接器位于 agent/src/trading/connectors 下,每个券商一个子目录,内部通常包含: - sdk.py:封装对券商 SDK 或统一客户端的调用,暴露统一的读/写接口 - profiles.py / classification.py:用于配置与分类 - 其他辅助模块(如 credentials、client、trading 等)

graph TB subgraph "交易连接器" B["Binance<br/>sdk.py"] F["富途 Futu<br/>sdk.py"] L["长桥 Longbridge<br/>sdk.py"] I["盈透 IBKR<br/>local.py"] end B --> |"ccxt 统一客户端"| C["ccxt.binance"] F --> |"本地 OpenD TCP"| O["OpenD(127.0.0.1:11111)"] L --> |"HTTP API"| H["Longbridge OpenAPI"] I --> |"本地 Socket"| T["TWS/IB Gateway"]

图示来源 - agent/src/trading/connectors/binance/sdk.py:628-640 - agent/src/trading/connectors/futu/sdk.py:682-703 - agent/src/trading/connectors/longbridge/sdk.py:640-677 - agent/src/trading/connectors/ibkr/local.py:452-483

章节来源 - agent/src/trading/connectors/binance/sdk.py:1-782 - agent/src/trading/connectors/futu/sdk.py:1-927 - agent/src/trading/connectors/longbridge/sdk.py:1-893 - agent/src/trading/connectors/ibkr/local.py:1-686

核心组件

章节来源 - agent/src/trading/connectors/binance/sdk.py:217-264 - agent/src/trading/connectors/futu/sdk.py:223-272 - agent/src/trading/connectors/longbridge/sdk.py:220-269 - agent/src/trading/connectors/ibkr/local.py:165-218

架构总览

下图展示四个连接器的通用调用路径:上层工具/服务调用统一接口,连接器负责鉴权、限流、字段映射与错误包装,最终返回标准化结果。

sequenceDiagram participant U as "上层调用方" participant C as "连接器SDK" participant E as "券商/网关" U->>C : get_quote/get_historical_bars/get_positions C->>E : 建立连接/鉴权/请求 E-->>C : 原始响应 C->>C : 字段映射/类型转换/错误包装 C-->>U : 标准化结果(status, data)

图示来源 - agent/src/trading/connectors/binance/sdk.py:355-405 - agent/src/trading/connectors/futu/sdk.py:336-393 - agent/src/trading/connectors/longbridge/sdk.py:392-428 - agent/src/trading/connectors/ibkr/local.py:352-425

详细组件分析

Binance(加密货币现货)

flowchart TD S["开始"] --> V["参数校验(side/order_type/quantity/notional/price)"] V --> |通过| H["host 校验(paper/live 分离)"] H --> N["符号归一化(BASE/QUOTE)"] N --> P["构造参数(timeInForce/quoteOrderQty)"] P --> X["ccxt.create_order()"] X --> R{"成功?"} R -- 否 --> E["返回{status:error, error}"] R -- 是 --> O["返回{status:ok, order_id,...}"]

图示来源 - agent/src/trading/connectors/binance/sdk.py:423-547

章节来源 - agent/src/trading/connectors/binance/sdk.py:35-152 - agent/src/trading/connectors/binance/sdk.py:208-264 - agent/src/trading/connectors/binance/sdk.py:628-663 - agent/src/trading/connectors/binance/sdk.py:423-547

富途(Futu,本地 OpenD)

sequenceDiagram participant U as "调用方" participant F as "Futu SDK" participant G as "OpenD 网关" U->>F : place_order(symbol, side, qty, limit_price?) F->>G : 打开交易上下文 F->>G : 解析 acc_id(trd_env 匹配) alt 实盘 F->>G : unlock_trade(密码MD5) end F->>G : place_order(MARKET/NORMAL) G-->>F : ret_code + data F-->>U : {status, order_id, ...}

图示来源 - agent/src/trading/connectors/futu/sdk.py:407-539 - agent/src/trading/connectors/futu/sdk.py:617-643 - agent/src/trading/connectors/futu/sdk.py:682-703

章节来源 - agent/src/trading/connectors/futu/sdk.py:39-158 - agent/src/trading/connectors/futu/sdk.py:223-272 - agent/src/trading/connectors/futu/sdk.py:664-679 - agent/src/trading/connectors/futu/sdk.py:712-753

长桥(Longbridge,OpenAPI)

flowchart TD S["开始"] --> G{"environment == paper?"} G -- 否 --> E["返回{status:error, 'paper-only'}"] G -- 是 --> V["校验side/order_type/quantity/limit_price/tif"] V --> Q["构建SDK枚举并提交订单"] Q --> R{"返回order_id?"} R -- 否 --> E2["返回{status:error, error}"] R -- 是 --> O["返回{status:ok, ...}"]

图示来源 - agent/src/trading/connectors/longbridge/sdk.py:449-576

章节来源 - agent/src/trading/connectors/longbridge/sdk.py:34-140 - agent/src/trading/connectors/longbridge/sdk.py:220-318 - agent/src/trading/connectors/longbridge/sdk.py:627-677 - agent/src/trading/connectors/longbridge/sdk.py:680-707

盈透(IBKR,本地 TWS/IB Gateway)

sequenceDiagram participant U as "调用方" participant I as "IBKR local" participant A as "ib_async" participant G as "TWS/IB Gateway" U->>I : get_quote(symbol) I->>A : reqMktData(contract, snapshot=True) A->>G : 订阅快照 loop 轮询事件循环 A-->>I : ticker 字段逐步填充 end I-->>U : {status : ok, quote{bid,ask,last,...}}

图示来源 - agent/src/trading/connectors/ibkr/local.py:312-385

章节来源 - agent/src/trading/connectors/ibkr/local.py:21-33 - agent/src/trading/connectors/ibkr/local.py:165-218 - agent/src/trading/connectors/ibkr/local.py:429-503 - agent/src/trading/connectors/ibkr/local.py:530-541

依赖关系分析

graph LR BT["Binance"] --> CCXT["ccxt"] FT["富途"] --> FD["futu-api"] LG["长桥"] --> LB["longbridge/longport"] IB["盈透"] --> IA["ib_async"] FT --> OD["OpenD(本地)"] IB --> TG["TWS/IB Gateway(本地)"] LG --> HA["Longbridge OpenAPI(远程)"] BT --> EX["Binance API(远程)"]

图示来源 - agent/src/trading/connectors/binance/sdk.py:608-640 - agent/src/trading/connectors/futu/sdk.py:656-703 - agent/src/trading/connectors/longbridge/sdk.py:627-677 - agent/src/trading/connectors/ibkr/local.py:506-511

章节来源 - agent/src/trading/connectors/binance/sdk.py:608-640 - agent/src/trading/connectors/futu/sdk.py:656-703 - agent/src/trading/connectors/longbridge/sdk.py:627-677 - agent/src/trading/connectors/ibkr/local.py:506-511

性能与重试

[本节为通用指导,不直接分析具体文件]

故障排查指南

章节来源 - agent/src/trading/connectors/binance/sdk.py:217-264 - agent/src/trading/connectors/futu/sdk.py:223-272 - agent/src/trading/connectors/longbridge/sdk.py:220-318 - agent/src/trading/connectors/ibkr/local.py:165-218

结论

四个连接器在统一抽象下提供了跨市场的一致体验:Binance 侧重加密货币现货与 ccxt 统一接口;富途通过本地 OpenD 实现稳健的本地接入;长桥强调声明式环境安全与区域适配;盈透通过本地 TWS/IB Gateway 提供专业级只读能力。各连接器在错误处理、配置管理与健康检查方面保持一致,便于上层编排与监控。生产环境中建议结合调用方重试与熔断策略,以获得更健壮的稳定性。

[本节为总结,不直接分析具体文件]

附录:配置与使用示例

以下为各连接器的典型配置键与用途说明(不含代码片段): - Binance - 配置文件:binance.json - 关键键:api_key、api_secret、profile(paper/live-readonly/live)、testnet_host、timeout - 使用:调用 get_account_snapshot/get_positions/get_open_orders/get_quote/get_historical_bars - 富途 - 配置文件:futu.json - 关键键:host、port、security_firm、filter_trdmarket、acc_id、profile、timeout - 使用:同上;实盘下单需设置 FUTU_TRADE_PWD_MD5 环境变量 - 长桥 - 配置文件:longbridge.json - 关键键:app_key、app_secret、access_token、profile、region、timeout - 使用:同上;下单仅在 paper 环境允许 - 盈透 - 配置文件:ibkr-local.json - 关键键:host、port、client_id、profile、account、timeout - 使用:同上;确保本地 TWS/IB Gateway 已登录并启用 API

章节来源 - agent/src/trading/connectors/binance/sdk.py:82-152 - agent/src/trading/connectors/futu/sdk.py:71-158 - agent/src/trading/connectors/longbridge/sdk.py:58-140 - agent/src/trading/connectors/ibkr/local.py:48-118