高级交易连接器

📎 引用文件

本文引用的文件 - agent/src/trading/connectors/etoro/__init__.py - agent/src/trading/connectors/etoro/client.py - agent/src/trading/connectors/etoro/copy_trading.py - agent/src/trading/connectors/etoro/profiles.py - agent/src/trading/connectors/ibkr/__init__.py - agent/src/trading/connectors/ibkr/local.py - agent/src/trading/connectors/futu/sdk.py - agent/src/trading/connectors/mt5/orders.py - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py - agent/src/live/enforcement.py - README.md

目录

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

简介

本文件面向 Vibe-Trading 的高级交易连接器,聚焦 eToro 社交交易平台与 Interactive Brokers(IBKR)本地客户端的集成实现,并覆盖专业级交易系统的关键能力:跟单交易(Copy Trading)、智能投资组合、算法交易、复杂订单路由、风险管理与合规检查、机构级托管/清算结算与报告生成,以及与第三方研究与数据分析平台的集成方案。文档以代码级事实为依据,提供架构图、序列图、流程图和可操作的最佳实践。

项目结构

Vibe-Trading 的交易连接器采用“按券商/平台分目录”的组织方式,每个连接器包含配置、客户端封装、能力声明与读写路径隔离等模块。eToro 通过 REST API 暴露交易与跟单能力;IBKR 通过本地 TWS/IB Gateway 只读连接,避免直接云端直连带来的凭证与权限风险。

graph TB subgraph "eToro 连接器" EInit["__init__.py"] EClient["client.py"] ECopy["copy_trading.py"] EProfiles["profiles.py"] end subgraph "IBKR 连接器" IInit["__init__.py"] ILocal["local.py"] end subgraph "运行时与风控" Reconcile["runtime/reconcile.py"] OrderGuard["order_guard.py"] Halt["halt.py"] Enforcement["enforcement.py"] end EInit --> EClient EClient --> ECopy EProfiles --> EClient IInit --> ILocal ECopy --> EClient ILocal --> Reconcile Reconcile --> OrderGuard OrderGuard --> Halt OrderGuard --> Enforcement

图表来源 - agent/src/trading/connectors/etoro/__init__.py:1-7 - agent/src/trading/connectors/etoro/client.py:1-325 - agent/src/trading/connectors/etoro/copy_trading.py:1-213 - agent/src/trading/connectors/etoro/profiles.py:1-22 - agent/src/trading/connectors/ibkr/__init__.py:1-26 - agent/src/trading/connectors/ibkr/local.py:1-686 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py - agent/src/live/enforcement.py

章节来源 - agent/src/trading/connectors/etoro/__init__.py:1-7 - agent/src/trading/connectors/ibkr/__init__.py:1-26

核心组件

章节来源 - agent/src/trading/connectors/etoro/client.py:1-325 - agent/src/trading/connectors/etoro/copy_trading.py:1-213 - agent/src/trading/connectors/etoro/profiles.py:1-22 - agent/src/trading/connectors/ibkr/local.py:1-686 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py - agent/src/live/enforcement.py

架构总览

下图展示从策略到执行的全链路:策略信号经运行时对账与风控后,进入各券商连接器;eToro 走 REST API 并支持跟单交易;IBKR 仅做本地只读数据接入,便于组合分析与监控。

sequenceDiagram participant Strategy as "策略/研究" participant Runtime as "运行时(对账/风控)" participant EToro as "eToro 连接器" participant IBKR as "IBKR 本地连接器" participant Broker as "券商/交易所" Strategy->>Runtime : 生成交易信号 Runtime->>Runtime : 对账/合规检查/熔断判断 alt 需要下单 Runtime->>EToro : 下单/跟单(授权+限额) EToro->>Broker : HTTP 请求(带鉴权/重试) Broker-->>EToro : 订单回执 EToro-->>Runtime : 标准化结果 else 仅读取 Runtime->>IBKR : 查询持仓/报价/历史 IBKR->>Broker : TWS/IB Gateway 只读 Broker-->>IBKR : 数据 IBKR-->>Runtime : 标准化数据 end Runtime-->>Strategy : 执行结果/状态

图表来源 - agent/src/trading/connectors/etoro/client.py:218-304 - agent/src/trading/connectors/etoro/copy_trading.py:29-185 - agent/src/trading/connectors/ibkr/local.py:165-425 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py

详细组件分析

eToro 跟单交易(Copy Trading)

sequenceDiagram participant Agent as "Agent/工具" participant Copy as "copy_trading.py" participant Client as "client.py(EtoroClient)" participant API as "eToro Public API" Agent->>Copy : copy_precheck(parent_cid, amount) Copy->>Client : POST /copy/eligibility Client->>API : HTTP 请求(含鉴权/重试) API-->>Client : 资格结果 Client-->>Copy : 标准化响应 Copy-->>Agent : ok/error + request_id Agent->>Copy : copy_start_or_adjust(parent_cid, amount, reference_id) Copy->>Client : POST /copy (referenceID) Client->>API : 提交跟随 API-->>Client : token/raw Client-->>Copy : 标准化响应 Copy-->>Agent : ok + token Agent->>Copy : copy_poll(reference_id) Copy->>Client : GET /copy/{ref} Client->>API : 查询进度 API-->>Client : 进度 Client-->>Copy : 标准化响应 Copy-->>Agent : ok + result/completed?

图表来源 - agent/src/trading/connectors/etoro/copy_trading.py:29-185 - agent/src/trading/connectors/etoro/client.py:218-304

章节来源 - agent/src/trading/connectors/etoro/copy_trading.py:1-213 - agent/src/trading/connectors/etoro/client.py:1-325 - agent/src/trading/connectors/etoro/profiles.py:1-22 - README.md:1275-1296

IBKR 本地只读连接与数据服务

flowchart TD Start(["开始"]) --> CheckPorts["扫描默认端口/检查目标端口"] CheckPorts --> PortOpen{"端口开放?"} PortOpen -- 否 --> ErrorPort["返回错误: 未监听"] PortOpen -- 是 --> CheckSDK{"ib_async 可用?"} CheckSDK -- 否 --> ErrorSDK["返回错误: 缺少依赖"] CheckSDK -- 是 --> Connect["建立 TWS/IB Gateway 连接<br/>唯一 clientId, readonly"] Connect --> Query["执行查询: 账户/持仓/挂单/报价/K线"] Query --> Release["释放连接"] Release --> End(["结束"]) ErrorPort --> End ErrorSDK --> End

图表来源 - agent/src/trading/connectors/ibkr/local.py:165-239 - agent/src/trading/connectors/ibkr/local.py:429-503 - agent/src/trading/connectors/ibkr/local.py:241-425

章节来源 - agent/src/trading/connectors/ibkr/local.py:1-686 - agent/src/trading/connectors/ibkr/__init__.py:1-26

其他专业级系统示例(Futu、MT5)

章节来源 - agent/src/trading/connectors/futu/sdk.py:453-599 - agent/src/trading/connectors/mt5/orders.py:1-39

运行时对账、订单守卫与熔断

flowchart TD S(["收到信号/订单"]) --> Validate["参数与规模校验"] Validate --> Mandate{"授权指令有效?"} Mandate -- 否 --> Block["阻断并记录审计"] Mandate -- 是 --> HaltCheck{"熔断状态?"} HaltCheck -- 是 --> Block HaltCheck -- 否 --> Route["路由至对应连接器"] Route --> Exec["执行/下单/跟单"] Exec --> Reconcile["对账与状态收敛"] Reconcile --> Decision{"是否异常/模糊?"} Decision -- 是 --> Halt["触发熔断/告警"] Decision -- 否 --> Done(["完成"]) Block --> Done

图表来源 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py - agent/src/live/enforcement.py

章节来源 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py - agent/src/live/enforcement.py

依赖关系分析

graph LR A["策略/研究"] --> B["运行时(对账/守卫/熔断)"] B --> C["eToro 连接器"] B --> D["IBKR 连接器"] C --> E["requests + eToro Public API"] D --> F["ib_async + TWS/IB Gateway"]

图表来源 - agent/src/trading/connectors/etoro/client.py:218-304 - agent/src/trading/connectors/ibkr/local.py:429-503 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py

章节来源 - agent/src/trading/connectors/etoro/client.py:1-325 - agent/src/trading/connectors/ibkr/local.py:1-686 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py

性能考量

[本节为通用指导,无需特定文件引用]

故障排查指南

章节来源 - agent/src/trading/connectors/etoro/client.py:169-187 - agent/src/trading/connectors/etoro/client.py:225-290 - agent/src/trading/connectors/ibkr/local.py:165-239 - agent/src/trading/connectors/ibkr/local.py:530-541 - agent/src/live/runtime/reconcile.py - agent/src/live/order_guard.py - agent/src/live/halt.py

结论

Vibe-Trading 的高级交易连接器通过 eToro 的 REST API 与 IBKR 的本地只读连接,构建了安全、可扩展且可审计的执行与数据通路。eToro 的跟单交易提供了社交交易的便捷入口,IBKR 的本地连接确保了数据的安全与稳定。运行时对账、订单守卫与熔断机制共同保障了生产环境的稳健性。建议在部署中严格遵循纸盘/实盘隔离、授权指令与熔断策略,并结合第三方研究与数据分析平台进行组合优化与风险管理。

[本节为总结性内容,无需特定文件引用]

附录

[本节为概念性补充,无需特定文件引用]