交易连接器

📎 引用文件

本文引用的文件 - agent/src/trading/service.py - agent/src/trading/profiles.py - agent/src/trading/types.py - agent/src/tools/trading_connector_tool.py - agent/src/trading/connectors/alpaca/sdk.py - agent/src/trading/connectors/binance/sdk.py - agent/src/trading/connectors/ibkr/local.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 的交易连接器系统提供全面文档,覆盖支持的12个主流券商与交易所连接器的实现架构、抽象层设计、认证授权机制、订单生命周期管理、风险控制策略、配置方法、API限制与错误处理,以及实盘交易的监控、审计与合规要求。同时给出连接器扩展开发指南,并展示订单执行、持仓管理与资金查询的实际使用示例路径。

项目结构

Vibe-Trading 的交易连接器采用“服务层 + 连接器模块”的分层架构: - 工具层(Tools):对外暴露统一的操作接口(账户、持仓、订单、行情、历史数据等),负责参数校验与结果封装。 - 服务层(Service):根据所选 Profile 的 transport 类型路由到具体连接器实现(本地 TWS、远程 MCP、或 broker_sdk)。 - 连接器层(Connectors):每个券商/交易所一个独立模块,实现统一的读/写接口;部分支持可选的安全代理(如 TAP)与凭据隔离。 - 配置与注册(Profiles):集中管理所有内置 Profile 与默认选择,持久化当前选中的 Profile。

graph TB Tools["工具层<br/>trading_connector_tool.py"] --> Service["服务层<br/>service.py"] Service --> Profiles["配置与注册<br/>profiles.py / types.py"] Service --> IBKR["IBKR 本地连接器<br/>ibkr/local.py"] Service --> Alpaca["Alpaca SDK 连接器<br/>alpaca/sdk.py"] Service --> Binance["Binance SDK 连接器<br/>binance/sdk.py"] Service --> Others["其他 SDK 连接器<br/>tiger/longbridge/okx/futu/dhan/shoonya/trading212/mt5/etoro"]

图表来源 - agent/src/tools/trading_connector_tool.py:208-504 - agent/src/trading/service.py:42-171 - agent/src/trading/profiles.py:27-41 - agent/src/trading/connectors/ibkr/local.py:165-218 - agent/src/trading/connectors/alpaca/sdk.py:261-296 - agent/src/trading/connectors/binance/sdk.py:217-264

章节来源 - agent/src/trading/service.py:1-171 - agent/src/trading/profiles.py:1-100 - agent/src/trading/types.py:1-52 - agent/src/tools/trading_connector_tool.py:1-800

核心组件

章节来源 - agent/src/tools/trading_connector_tool.py:208-504 - agent/src/trading/service.py:42-171 - agent/src/trading/profiles.py:27-41 - agent/src/trading/types.py:1-52

架构总览

下图展示了从工具调用到具体连接器的完整流程,包括 live 环境的强制风控与审计。

sequenceDiagram participant User as "用户/Agent" participant Tool as "工具层<br/>trading_connector_tool.py" participant Service as "服务层<br/>service.py" participant Gate as "风控与审计<br/>mandate/killswitch/audit" participant Conn as "连接器模块<br/>alpaca/binance/ibkr/..." User->>Tool : 调用 trading_place_order(...) Tool->>Tool : 参数校验(数量/名义/限价/TIF) Tool->>Service : place_order(symbol, side, quantity/notional, ...) Service->>Service : 解析profile与transport alt transport == "local_tws" Service->>Conn : IBKR 本地只读(无下单) else transport == "broker_sdk" Service->>Gate : 构建OrderIntent并执行live gate Gate-->>Service : 允许/拒绝 Service->>Conn : 调用连接器place_order/cancel_order opt live环境 Service->>Gate : 记录审计日志 end else transport == "remote_mcp" Service->>Conn : 远程MCP调用 end Service-->>Tool : 标准化响应(status, data) Tool-->>User : JSON结果

图表来源 - agent/src/tools/trading_connector_tool.py:431-504 - agent/src/trading/service.py:279-342 - agent/src/trading/connectors/alpaca/sdk.py:429-577 - agent/src/trading/connectors/binance/sdk.py:423-547 - agent/src/trading/connectors/ibkr/local.py:165-218

详细组件分析

连接器抽象层与服务路由

flowchart TD Start(["进入 service.place_order"]) --> Resolve["解析profile与transport"] Resolve --> |local_tws| LocalOnly["IBKR 本地只读(不支持下单)"] Resolve --> |broker_sdk| ModuleImport["动态导入connector模块"] Resolve --> |remote_mcp| RemoteCall["远程MCP调用"] ModuleImport --> EnvCheck{"environment == paper?"} EnvCheck --> |是| PaperPlace["直接调用连接器place_order"] EnvCheck --> |否| LiveGate["构造OrderIntent并执行live gate"] LiveGate --> Audit["记录审计日志"] PaperPlace --> Return["返回标准化结果"] Audit --> Return LocalOnly --> Return RemoteCall --> Return

图表来源 - agent/src/trading/service.py:279-342

章节来源 - agent/src/trading/service.py:1-171

认证与授权机制

章节来源 - agent/src/trading/connectors/alpaca/sdk.py:183-227 - agent/src/trading/connectors/alpaca/sdk.py:580-665 - agent/src/trading/connectors/binance/sdk.py:643-663 - agent/src/trading/connectors/ibkr/local.py:530-541

订单生命周期管理

sequenceDiagram participant Tool as "工具层" participant Service as "服务层" participant Conn as "连接器" Tool->>Service : place_order(...) Service->>Service : 构建OrderIntent与风控检查 Service->>Conn : place_order(config, symbol, side, ...) Conn-->>Service : {status, order_id, ...} Service-->>Tool : 标准化响应 Tool->>Service : get_open_orders(include_executions) Service->>Conn : get_open_orders(...) Conn-->>Service : {open_orders, executions?} Service-->>Tool : 标准化响应

图表来源 - agent/src/tools/trading_connector_tool.py:431-504 - agent/src/trading/service.py:279-342 - agent/src/trading/connectors/alpaca/sdk.py:429-577 - agent/src/trading/connectors/binance/sdk.py:423-547

章节来源 - agent/src/tools/trading_connector_tool.py:431-504 - agent/src/trading/service.py:279-342

风险控制策略

章节来源 - agent/src/trading/service.py:245-342 - agent/src/trading/service.py:345-370 - agent/src/trading/service.py:512-551

各连接器特性与 API 限制

章节来源 - agent/src/trading/connectors/alpaca/sdk.py:261-296 - agent/src/trading/connectors/binance/sdk.py:217-264 - agent/src/trading/connectors/ibkr/local.py:165-218 - agent/src/trading/service.py:13-29

配置方法与最佳实践

章节来源 - agent/src/tools/trading_connector_tool.py:234-259 - agent/src/trading/profiles.py:44-100 - agent/src/trading/connectors/alpaca/sdk.py:143-179 - agent/src/trading/connectors/binance/sdk.py:157-205 - agent/src/trading/connectors/ibkr/local.py:121-153

实盘交易监控、审计与合规

章节来源 - agent/src/trading/service.py:42-65 - agent/src/trading/service.py:345-370 - agent/src/trading/service.py:512-551

连接器扩展开发指南

章节来源 - agent/src/trading/profiles.py:27-41 - agent/src/trading/service.py:13-29

实际使用示例(路径引用)

依赖关系分析

graph LR Tools["工具层"] --> Service["服务层"] Service --> Profiles["profiles.py"] Service --> Types["types.py"] Service --> Alpaca["alpaca/sdk.py"] Service --> Binance["binance/sdk.py"] Service --> IBKR["ibkr/local.py"] Alpaca --> TAP["TAP 代理(可选)"] Binance --> CCXT["ccxt(可选)"] IBKR --> IBA["ib_async(可选)"]

图表来源 - agent/src/trading/service.py:13-29 - agent/src/trading/connectors/alpaca/sdk.py:252-258 - agent/src/trading/connectors/binance/sdk.py:208-214 - agent/src/trading/connectors/ibkr/local.py:156-162

章节来源 - agent/src/trading/service.py:13-29 - agent/src/trading/connectors/alpaca/sdk.py:252-258 - agent/src/trading/connectors/binance/sdk.py:208-214 - agent/src/trading/connectors/ibkr/local.py:156-162

性能考量

章节来源 - agent/src/trading/connectors/ibkr/local.py:429-503 - agent/src/trading/connectors/binance/sdk.py:628-640

故障排查指南

章节来源 - agent/src/trading/connectors/ibkr/local.py:165-218 - agent/src/trading/connectors/alpaca/sdk.py:261-296 - agent/src/trading/connectors/binance/sdk.py:217-264 - agent/src/trading/service.py:345-370

结论

Vibe-Trading 的交易连接器系统通过清晰的分层架构与严格的 fail-closed 设计,实现了跨券商/交易所的统一接入、安全可控的实盘交易与完善的审计合规。服务层的路由机制与连接器的模块化设计使得扩展新券商变得简单而稳健。推荐在生产环境中启用 mandate gate、kill switch 与审计记录,并结合 TAP 实现凭据隔离与人工审批。

附录