长桥证券集成

📎 引用文件

本文引用的文件 - agent/src/trading/connectors/longbridge/sdk.py - agent/src/trading/connectors/longbridge/credentials.py - agent/src/trading/connectors/longbridge/profiles.py - agent/backtest/loaders/longbridge.py - agent/src/config/env_schema.py - agent/tests/test_longbridge_runtime.py - agent/tests/test_longbridge_loader.py - agent/src/tools/trading_connector_tool.py

目录

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

简介

本文件面向在 Vibe-Trading 中集成“长桥(Longbridge/LongPort OpenAPI)”的开发者与运维人员,系统性说明以下要点: - SDK 初始化与认证流程(环境变量与运行时文件的原子化凭证解析) - 权限管理与只读/交易能力边界(基于 Profile 的能力声明) - 全球多市场历史数据获取(美股、港股;A股通过符号约定支持) - 股票下单(仅模拟盘)、订单生命周期与成交确认 - 实时行情推送与历史数据查询的实现方式 - 账户信息同步(资产、持仓、订单) - 云端与本地部署的配置差异

项目结构

围绕长桥集成的关键代码分布在以下模块: - 连接器 SDK 封装:提供账户、持仓、订单、行情、历史的只读访问与模拟盘下单 - 凭证解析:从环境变量或运行时文件原子化选择并校验三要素(App Key、App Secret、Access Token) - Profile 注册表:声明 longbridge 的连接身份、环境(paper/live)、传输类型与能力集合 - 回测数据加载器:封装 QuoteContext 拉取 OHLCV 历史数据,自动分窗与缓存 - 配置与环境变量:定义 LONGBRIDGE_* 环境变量映射 - 工具层:统一交易下单入口,将 LLM 调用参数规范化后路由到具体连接器

graph TB subgraph "连接器" LB_SDK["Longbridge SDK 封装<br/>sdk.py"] LB_CRED["凭证解析<br/>credentials.py"] LB_PROF["Profile 注册表<br/>profiles.py"] end subgraph "数据" LB_LOADER["历史数据加载器<br/>backtest/loaders/longbridge.py"] end subgraph "配置" ENV["环境变量 Schema<br/>env_schema.py"] end subgraph "工具" TOOL["交易工具入口<br/>trading_connector_tool.py"] end ENV --> LB_CRED LB_CRED --> LB_SDK LB_CRED --> LB_LOADER LB_PROF --> TOOL TOOL --> LB_SDK LB_SDK --> |"TradeContext / QuoteContext"| 外部["长桥 OpenAPI"] LB_LOADER --> |"QuoteContext.history_candlesticks_by_date"| 外部

图表来源 - agent/src/trading/connectors/longbridge/sdk.py:34-78 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/backtest/loaders/longbridge.py:200-240 - agent/src/config/env_schema.py:193-195 - agent/src/tools/trading_connector_tool.py:440-487

章节来源 - agent/src/trading/connectors/longbridge/sdk.py:34-78 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/backtest/loaders/longbridge.py:200-240 - agent/src/config/env_schema.py:193-195 - agent/src/tools/trading_connector_tool.py:440-487

核心组件

章节来源 - agent/src/trading/connectors/longbridge/sdk.py:335-563 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/backtest/loaders/longbridge.py:200-240 - agent/src/config/env_schema.py:193-195 - agent/src/tools/trading_connector_tool.py:440-487

架构总览

下图展示从工具调用到长桥 OpenAPI 的端到端流程,包括凭证解析、Profile 选择、SDK 上下文创建与 API 调用。

sequenceDiagram participant User as "用户/策略" participant Tool as "交易工具入口" participant Prof as "Profile 注册表" participant Cred as "凭证解析" participant SDK as "Longbridge SDK 封装" participant API as "长桥 OpenAPI" User->>Tool : 调用下单/查询 Tool->>Prof : 选择 longbridge Profile Prof-->>Tool : 返回 profile(含 environment/transport/capabilities) Tool->>Cred : 解析 LONGBRIDGE_* 或运行时文件 Cred-->>Tool : 返回完整凭据或错误诊断 Tool->>SDK : 构建配置并调用接口 SDK->>API : TradeContext/QuoteContext 请求 API-->>SDK : 返回账户/持仓/订单/行情/历史 SDK-->>Tool : 标准化结果 Tool-->>User : 返回响应

图表来源 - agent/src/tools/trading_connector_tool.py:440-487 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/sdk.py:668-707

详细组件分析

认证与权限管理

flowchart TD Start(["开始"]) --> ReadEnv["读取环境变量 LONGBRIDGE_*"] ReadEnv --> CheckEnv{"三要素是否完整?"} CheckEnv -- 否 --> ReadFile["读取运行时文件 longbridge.json"] CheckEnv -- 是 --> Compare{"是否与文件一致?"} Compare -- 不一致 --> Conflict["返回 credentials_conflict"] Compare -- 一致 --> UseEnv["使用环境变量作为凭据"] ReadFile --> CheckFile{"三要素是否完整?"} CheckFile -- 否 --> Partial["返回 credentials_partial"] CheckFile -- 是 --> UseFile["使用运行时文件作为凭据"] UseEnv --> End(["完成"]) UseFile --> End Conflict --> End Partial --> End

图表来源 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/sdk.py:34-78 - agent/src/trading/connectors/longbridge/profiles.py:12-55

章节来源 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/sdk.py:34-78 - agent/src/trading/connectors/longbridge/profiles.py:12-55

全球多市场历史数据(美股、港股、A股)

flowchart TD S(["开始"]) --> MapSym["符号转换(.US/.HK/.SZ/.SH)"] MapSym --> MapPeriod["周期映射到 SDK Period"] MapPeriod --> SplitWin["按 180 天分窗(最多20窗)"] SplitWin --> CallAPI["逐窗调用 history_candlesticks_by_date"] CallAPI --> Normalize["标准化为 OHLCV DataFrame"] Normalize --> Cache["写入缓存"] Cache --> E(["结束"])

图表来源 - agent/backtest/loaders/longbridge.py:89-156 - agent/backtest/loaders/longbridge.py:159-197 - agent/backtest/loaders/longbridge.py:255-412

章节来源 - agent/backtest/loaders/longbridge.py:89-156 - agent/backtest/loaders/longbridge.py:159-197 - agent/backtest/loaders/longbridge.py:255-412

股票交易与订单生命周期(仅模拟盘)

sequenceDiagram participant U as "用户/策略" participant T as "交易工具" participant P as "Profile 检查" participant C as "SDK 封装" participant O as "长桥 OpenAPI" U->>T : place_order(...) T->>P : 校验是否为 paper profile P-->>T : 允许/拒绝 alt 允许 T->>C : 构造订单参数(数量/限价/TIF) C->>O : submit_order O-->>C : {order_id, status...} C-->>T : 返回 order_id T-->>U : 下单成功 else 拒绝 T-->>U : 错误(非 paper 不允许下单) end

图表来源 - agent/src/tools/trading_connector_tool.py:440-487 - agent/src/trading/connectors/longbridge/sdk.py:431-563 - agent/src/trading/connectors/longbridge/sdk.py:344-363

章节来源 - agent/src/tools/trading_connector_tool.py:440-487 - agent/src/trading/connectors/longbridge/sdk.py:431-563 - agent/src/trading/connectors/longbridge/sdk.py:344-363

实时行情推送与历史数据查询

章节来源 - agent/backtest/loaders/longbridge.py:200-240 - agent/backtest/loaders/longbridge.py:255-412

账户信息同步(资产、持仓、订单)

章节来源 - agent/src/trading/connectors/longbridge/sdk.py:335-363

期权与基金交易

[本节为概念性说明,不直接分析具体文件]

依赖关系分析

graph LR ENV["env_schema.py"] --> CRED["credentials.py"] CRED --> SDK["sdk.py"] PROF["profiles.py"] --> TOOL["trading_connector_tool.py"] TOOL --> SDK LOADER["backtest/loaders/longbridge.py"] --> SDK

图表来源 - agent/src/config/env_schema.py:193-195 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/sdk.py:668-707 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/backtest/loaders/longbridge.py:200-240 - agent/src/tools/trading_connector_tool.py:440-487

章节来源 - agent/src/config/env_schema.py:193-195 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/src/trading/connectors/longbridge/sdk.py:668-707 - agent/src/trading/connectors/longbridge/profiles.py:12-55 - agent/backtest/loaders/longbridge.py:200-240 - agent/src/tools/trading_connector_tool.py:440-487

性能与限制

章节来源 - agent/backtest/loaders/longbridge.py:62-67 - agent/backtest/loaders/longbridge.py:135-156 - agent/backtest/loaders/longbridge.py:159-197 - agent/src/trading/connectors/longbridge/sdk.py:431-563 - agent/src/trading/connectors/longbridge/sdk.py:34-78

故障排查指南

章节来源 - agent/src/trading/connectors/longbridge/credentials.py:49-130 - agent/backtest/loaders/longbridge.py:135-156 - agent/src/trading/connectors/longbridge/sdk.py:431-563 - agent/tests/test_longbridge_runtime.py:47-67 - agent/tests/test_longbridge_runtime.py:178-207 - agent/tests/test_longbridge_runtime.py:249-267 - agent/tests/test_longbridge_runtime.py:325-342 - agent/tests/test_longbridge_runtime.py:408-427 - agent/tests/test_longbridge_loader.py:17-33 - agent/tests/test_longbridge_loader.py:85-143

结论

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

附录:部署与配置

环境变量与配置文件

章节来源 - agent/src/config/env_schema.py:193-195 - agent/src/trading/connectors/longbridge/sdk.py:34-78 - agent/src/trading/connectors/longbridge/sdk.py:174-208

云端与本地部署差异

章节来源 - agent/tests/test_longbridge_runtime.py:47-67 - agent/tests/test_longbridge_runtime.py:178-207 - agent/tests/test_longbridge_runtime.py:249-267 - agent/tests/test_longbridge_runtime.py:325-342 - agent/tests/test_longbridge_runtime.py:408-427