富途连接器

📎 引用文件

本文引用的文件 - agent/src/trading/connectors/futu/sdk.py - agent/src/trading/connectors/futu/profiles.py - agent/src/trading/connectors/futu/__init__.py - agent/backtest/loaders/futu.py - agent/tests/test_futu_loader.py - agent/src/config/env_schema.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与频率限制
  8. 故障排查指南
  9. 结论
  10. 附录:市场规则差异与适配方案

简介

本文件系统性梳理富途(Futu/moomoo)连接器的实现,覆盖本地 OpenD 网关通信、账户/行情/历史数据读取、下单与撤单流程、纸模拟与实盘隔离、环境配置与认证、以及回测数据加载器。文档基于仓库中的实际代码进行说明,并提供架构图、时序图与流程图帮助理解。

项目结构

富途相关代码主要分布在以下位置: - 交易连接器层:通过官方 futu-api SDK 与本地 OpenD 通信,提供只读能力与受控的下单/撤单能力 - 回测数据加载器:面向港股与A股的OHLCV历史数据拉取与标准化 - 配置文件与环境变量:定义 OpenD 地址、端口及交易密码等敏感信息

graph TB A["应用/策略"] --> B["富途连接器<br/>sdk.py"] B --> C["OpenD 网关<br/>127.0.0.1:11111"] B --> D["futu-api SDK"] A --> E["回测数据加载器<br/>backtest/loaders/futu.py"] E --> C E --> D

图表来源 - agent/src/trading/connectors/futu/sdk.py:1-25 - agent/backtest/loaders/futu.py:106-116

章节来源 - agent/src/trading/connectors/futu/sdk.py:1-25 - agent/backtest/loaders/futu.py:106-116

核心组件

章节来源 - agent/src/trading/connectors/futu/sdk.py:71-158 - agent/backtest/loaders/futu.py:82-116

架构总览

富途连接器采用“本地网关 + SDK”的架构:OpenD 运行在用户机器上持有登录态,SDK 通过本地 TCP 与之通信。连接器不直接持有富途凭据,所有写操作(下单/撤单)均经过严格的校验与安全门控。

sequenceDiagram participant App as "应用" participant Conn as "富途连接器" participant SDK as "futu-api SDK" participant OD as "OpenD 网关" App->>Conn : 请求账户/行情/历史 Conn->>OD : 建立连接(默认127.0.0.1 : 11111) Conn->>SDK : 调用 OpenQuoteContext/OpenSecTradeContext SDK-->>Conn : 返回DataFrame/记录集 Conn-->>App : 标准化结果 App->>Conn : 下单/撤单 Conn->>Conn : 校验参数/环境隔离 Conn->>OD : unlock_trade(仅实盘) Conn->>SDK : place_order/modify_order(CANCEL) SDK-->>Conn : 返回结果 Conn-->>App : 成功或错误信封

图表来源 - agent/src/trading/connectors/futu/sdk.py:682-703 - agent/src/trading/connectors/futu/sdk.py:407-539 - agent/src/trading/connectors/futu/sdk.py:542-614

详细组件分析

连接器配置与认证

章节来源 - agent/src/trading/connectors/futu/sdk.py:163-183 - agent/src/trading/connectors/futu/sdk.py:617-643 - agent/src/config/env_schema.py:164-165 - agent/src/config/env_schema.py:294-294

账户与持仓查询

章节来源 - agent/src/trading/connectors/futu/sdk.py:275-333

实时行情与历史K线

章节来源 - agent/src/trading/connectors/futu/sdk.py:336-393 - agent/backtest/loaders/futu.py:22-36

下单与撤单(失败关闭模式)

章节来源 - agent/src/trading/connectors/futu/sdk.py:407-539 - agent/src/trading/connectors/futu/sdk.py:542-614

纸模拟与实盘隔离

章节来源 - agent/src/trading/connectors/futu/sdk.py:15-20 - agent/src/trading/connectors/futu/sdk.py:712-753

回测数据加载器(港股/A股)

章节来源 - agent/backtest/loaders/futu.py:39-56 - agent/backtest/loaders/futu.py:82-104 - agent/backtest/loaders/futu.py:140-253

内置Profile与能力

章节来源 - agent/src/trading/connectors/futu/profiles.py:14-80

依赖关系分析

graph LR SDK["futu-api SDK"] --> Conn["富途连接器"] OD["OpenD 网关"] --> Conn Env["环境变量/JSON配置"] --> Conn Tests["单元测试"] --> Loader["回测加载器"] Loader --> OD Loader --> SDK

图表来源 - agent/src/trading/connectors/futu/sdk.py:656-670 - agent/backtest/loaders/futu.py:125-138 - agent/tests/test_futu_loader.py:16-44

章节来源 - agent/src/trading/connectors/futu/sdk.py:656-670 - agent/backtest/loaders/futu.py:125-138 - agent/tests/test_futu_loader.py:16-44

性能与频率限制

章节来源 - agent/backtest/loaders/futu.py:207-253 - agent/src/trading/connectors/futu/sdk.py:369-393

故障排查指南

章节来源 - agent/src/trading/connectors/futu/sdk.py:223-272 - agent/src/trading/connectors/futu/sdk.py:673-679 - agent/backtest/loaders/futu.py:168-172

结论

富途连接器以本地 OpenD 网关为核心,结合官方 SDK 提供稳健的只读与受控写能力。通过 trd_env 严格隔离纸模拟与实盘,配合失败关闭的错误模型与密码解锁机制,保障交易安全。回测加载器对港股与A股数据进行标准化与缓存,提升回测效率。建议在策略层增加频率控制与重试逻辑,以应对富途API的限制与网络波动。

附录:市场规则差异与适配方案

章节来源 - agent/backtest/loaders/futu.py:39-56 - agent/src/trading/connectors/futu/sdk.py:78-93