交易连接器工具

📎 引用文件

本文引用的文件
- agent/src/trading/service.py - agent/src/trading/profiles.py - agent/src/trading/connectors/ibkr/local.py - agent/src/trading/connectors/alpaca/sdk.py - agent/src/trading/connectors/tiger/sdk.py - agent/src/tools/block_trades_tool.py - agent/src/tools/margin_trading_tool.py - agent/src/tools/northbound_tool.py - agent/src/tools/trading_connector_tool.py - agent/mcp_server.py

目录

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

简介

本文件为 Vibe-Trading 交易连接器工具的权威技术文档,聚焦以下目标: - 券商连接管理:统一接入、认证配置、环境隔离(模拟/实盘只读/实盘可写) - A 股特色数据:大宗交易查询、融资融券分析、北向资金追踪 - 多平台接入规范:IBKR 本地 TWS/Gateway、Alpaca、Tiger 等直连 SDK;MCP 工具暴露统一接口 - 安全与风控:指令前校验、授权委托(mandate)、审计日志、熔断与失败关闭 - 自动化策略组合:通过 MCP/CLI/API 串联连接器与数据工具,实现端到端策略闭环

项目结构

交易能力由“连接器服务 + 数据工具 + MCP 工具层”构成: - 连接器服务:抽象不同券商的读取与写入操作,按 transport(local_tws / broker_sdk / remote)路由到具体实现 - 数据工具:面向 A 股的 Eastmoney/Tushare 数据源,提供大宗交易、融资融券、北向资金等只读工具 - MCP 工具层:对外暴露 trading_*、get_block_trades、get_margin_trading、get_northbound_flow 等工具

graph TB subgraph "MCP/CLI/API" M["mcp_server.py<br/>工具注册与路由"] end subgraph "交易连接器服务" S["service.py<br/>统一读写入口"] P["profiles.py<br/>连接器档案与选择"] end subgraph "券商连接器" IBKR["ibkr/local.py<br/>本地TWS/Gateway"] ALPACA["alpaca/sdk.py<br/>官方SDK+可选TAP代理"] TIGER["tiger/sdk.py<br/>官方SDK"] end subgraph "A股数据工具" BT["block_trades_tool.py"] MT["margin_trading_tool.py"] NB["northbound_tool.py"] end M --> S S --> P S --> IBKR S --> ALPACA S --> TIGER M --> BT M --> MT M --> NB

图表来源 - agent/mcp_server.py:1172-1243 - agent/src/trading/service.py:1-226 - agent/src/trading/profiles.py:1-70 - agent/src/trading/connectors/ibkr/local.py:1-200 - agent/src/trading/connectors/alpaca/sdk.py:1-200 - agent/src/trading/connectors/tiger/sdk.py:1-200 - agent/src/tools/block_trades_tool.py:1-282 - agent/src/tools/margin_trading_tool.py:1-250 - agent/src/tools/northbound_tool.py:1-275

章节来源 - agent/src/trading/service.py:1-226 - agent/src/trading/profiles.py:1-70 - agent/mcp_server.py:1172-1243

核心组件

章节来源 - agent/src/trading/service.py:42-342 - agent/src/trading/profiles.py:24-70 - agent/src/trading/connectors/ibkr/local.py:21-68 - agent/src/trading/connectors/alpaca/sdk.py:42-151 - agent/src/trading/connectors/tiger/sdk.py:33-146 - agent/src/tools/block_trades_tool.py:29-44 - agent/src/tools/margin_trading_tool.py:27-46 - agent/src/tools/northbound_tool.py:27-46

架构总览

sequenceDiagram participant U as "用户/策略" participant MCP as "MCP工具层" participant SVC as "连接器服务" participant PROF as "连接器档案" participant BRK as "券商连接器" participant DAT as "A股数据工具" U->>MCP : 调用 trading_check/trading_account/place_order MCP->>SVC : 转发请求(含profile_id/覆盖参数) SVC->>PROF : 解析并获取profile alt local_tws SVC->>BRK : IBKR本地TWS/Gateway else broker_sdk SVC->>BRK : 对应券商SDK(Alpaca/Tiger/...) else remote SVC->>BRK : 远程通道 end Note over SVC,BRK : 实盘下单经mandate gate + 审计 U->>MCP : 调用 get_block_trades/get_margin_trading/get_northbound_flow MCP->>DAT : Eastmoney/Tushare 只读数据

图表来源 - agent/src/trading/service.py:42-342 - agent/src/trading/profiles.py:49-70 - agent/mcp_server.py:1172-1243 - agent/src/tools/block_trades_tool.py:207-282 - agent/src/tools/margin_trading_tool.py:163-250 - agent/src/tools/northbound_tool.py:204-275

详细组件分析

连接器服务与统一接口

flowchart TD Start(["进入 service.place_order"]) --> LoadProfile["加载profile"] LoadProfile --> Transport{"transport类型"} Transport --> |broker_sdk| BuildCfg["构建connector配置"] BuildCfg --> Env{"environment"} Env --> |paper| DirectPlace["直接调用connector.place_order"] Env --> |live| MandateGate["mandate gate + 审计"] MandateGate --> ExecuteLive["execute_live_order"] DirectPlace --> Return["返回结果"] ExecuteLive --> Return

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

章节来源 - agent/src/trading/service.py:42-342

IBKR 本地连接器(TWS/Gateway)

classDiagram class IBKRLocalConfig { +string host +int port +int client_id +string profile +string account +float timeout +bool readonly +from_mapping(data) +with_overrides(...) } class LocalConnector { +check_local_status(config, scan) dict +get_account_snapshot(cfg) dict +get_positions(cfg) dict +get_open_orders(cfg, include_executions) dict +get_quote(symbol, exchange, currency, sec_type) dict +get_historical_bars(symbol, ...) dict } IBKRLocalConfig <.. LocalConnector : "使用"

图表来源 - agent/src/trading/connectors/ibkr/local.py:48-118 - agent/src/trading/connectors/ibkr/local.py:165-200

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

Alpaca 连接器(含 TAP 代理)

sequenceDiagram participant App as "应用" participant SVC as "连接器服务" participant ALP as "Alpaca SDK" participant TAP as "TAP代理(可选)" App->>SVC : place_order(..., overrides={...}) SVC->>ALP : build_config(profile_config, overrides) alt TAP启用 ALP->>TAP : 带占位符头部的HTTP请求 TAP-->>ALP : 代理响应(已注入凭据) else 直连 ALP-->>App : 直接API响应 end App-->>App : 返回标准化结果

图表来源 - agent/src/trading/connectors/alpaca/sdk.py:1-20 - agent/src/trading/connectors/alpaca/sdk.py:42-151

章节来源 - agent/src/trading/connectors/alpaca/sdk.py:1-200

Tiger 连接器

章节来源 - agent/src/trading/connectors/tiger/sdk.py:1-146

A 股数据工具

flowchart TD Q["get_block_trades(code,days)"] --> Validate["校验代码/范围"] Validate --> CallEM["调用Eastmoney数据中心"] CallEM --> Parse["解析并标准化记录"] Parse --> Limit["限制记录数量"] Limit --> Out["返回JSON信封"]

图表来源 - agent/src/tools/block_trades_tool.py:47-92 - agent/src/tools/block_trades_tool.py:207-282

章节来源 - agent/src/tools/block_trades_tool.py:1-282 - agent/src/tools/margin_trading_tool.py:1-250 - agent/src/tools/northbound_tool.py:1-275

MCP 工具与统一入口

章节来源 - agent/mcp_server.py:1172-1243 - agent/mcp_server.py:1702-1736 - agent/src/tools/trading_connector_tool.py:208-235

依赖关系分析

graph LR Profiles["profiles.py"] --> Service["service.py"] Service --> IBKR["ibkr/local.py"] Service --> Alpaca["alpaca/sdk.py"] Service --> Tiger["tiger/sdk.py"] MCP["mcp_server.py"] --> Tools["tools/*_tool.py"] Tools --> EM["Eastmoney客户端"] Tools --> TS["Tushare回退"]

图表来源 - agent/src/trading/profiles.py:24-70 - agent/src/trading/service.py:17-29 - agent/src/tools/margin_trading_tool.py:183-215 - agent/src/tools/northbound_tool.py:218-258

章节来源 - agent/src/trading/service.py:17-29 - agent/src/tools/margin_trading_tool.py:183-215 - agent/src/tools/northbound_tool.py:218-258

性能与可靠性

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

故障排查指南

章节来源 - agent/src/trading/connectors/ibkr/local.py:165-200 - agent/src/trading/connectors/alpaca/sdk.py:1-20 - agent/src/trading/connectors/tiger/sdk.py:33-58 - agent/src/tools/margin_trading_tool.py:183-215 - agent/src/tools/northbound_tool.py:218-258

结论

Vibe-Trading 的交易连接器工具以“连接器服务 + 数据工具 + MCP 工具层”的分层架构,实现了多券商接入的统一化、A 股特色数据的稳定获取以及严格的交易安全与风控。通过 profile 与环境隔离、mandate gate、审计日志与失败关闭机制,既保证了研究阶段的灵活性,也为实盘交易的稳健性提供了保障。结合 MCP 工具,用户可以便捷地组合数据与交易能力,构建端到端的自动化交易策略。

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

附录:常用调用示例路径

[本节为指引性内容,无需额外说明]