生成日期:2026-03-08 扫描级别:Exhaustive(详尽扫描) 项目类型:Python Library 总文件数:764个Python源文件 + 212个测试文件
bt_api_py/ # 项目根目录
├── bt_api_py/ # 主要Python包 [核心代码]
│ ├── __init__.py # 包入口,导出主要API
│ ├── bt_api.py # BtApi主类 - 统一API入口 [入口点]
│ ├── registry.py # ExchangeRegistry - 交易所注册表 [核心架构]
│ ├── event_bus.py # EventBus - 事件总线 [核心架构]
│ ├── exceptions.py # 自定义异常层次结构 [错误处理]
│ ├── auth_config.py # 认证配置类 [配置管理]
│ │
│ ├── containers/ # 标准化数据容器 [数据层]
│ │ ├── __init__.py # 导出所有容器类型
│ │ ├── auto_init_mixin.py # 自动初始化混入类 [基础类]
│ │ ├── instrument.py # 合约工具类
│ │ │
│ │ ├── accounts/ # 账户信息容器
│ │ ├── assets/ # 资产容器
│ │ ├── balances/ # 余额容器
│ │ ├── bars/ # K线数据容器
│ │ ├── exchanges/ # 交易所配置容器
│ │ ├── fundingrates/ # 资金费率容器
│ │ ├── greeks/ # 期权希腊值容器
│ │ ├── incomes/ # 收益容器
│ │ ├── liquidations/ # 强平容器
│ │ ├── markprices/ # 标记价格容器
│ │ ├── openinterests/ # 持仓量容器
│ │ ├── orderbooks/ # 订单簿容器
│ │ ├── orders/ # 订单容器 [交易核心]
│ │ │ ├── order.py # 订单基类
│ │ │ ├── binance_order.py # Binance订单实现
│ │ │ ├── okx_order.py # OKX订单实现
│ │ │ ├── ctp_order.py # CTP订单实现
│ │ │ └── ... # 其他交易所订单
│ │ ├── pools/ # 流动性池容器
│ │ ├── positions/ # 持仓容器 [交易核心]
│ │ ├── pricelimits/ # 价格限制容器
│ │ ├── requestdatas/ # 请求数据容器
│ │ ├── symbols/ # 交易对容器
│ │ ├── tickers/ # 行情容器 [市场数据]
│ │ ├── timers/ # 定时器容器
│ │ ├── trades/ # 成交容器 [交易核心]
│ │ ├── ctp/ # CTP特有容器
│ │ └── ib/ # IB特有容器
│ │
│ ├── feeds/ # 交易所Feed实现 [集成层]
│ │ ├── __init__.py # Feed基类和工具
│ │ ├── registry.py # Feed注册表
│ │ ├── abstract_feed.py # 抽象Feed协议 [接口定义]
│ │ │
│ │ ├── live_binance/ # Binance实现 [完整支持]
│ │ │ ├── spot.py # 现货
│ │ │ ├── swap.py # 永续合约
│ │ │ └── ...
│ │ │
│ │ ├── live_okx/ # OKX实现 [完整支持]
│ │ ├── live_htx/ # HTX (Huobi) 实现 [完整支持]
│ │ │
│ │ ├── live_bybit/ # Bybit实现
│ │ ├── live_bitget/ # Bitget实现
│ │ ├── live_kraken/ # Kraken实现
│ │ ├── live_gate/ # Gate.io实现
│ │ ├── live_upbit/ # Upbit实现
│ │ ├── live_cryptocom/ # Crypto.com实现
│ │ ├── live_kucoin/ # KuCoin实现
│ │ ├── live_mexc/ # MEXC实现
│ │ ├── live_bitfinex/ # Bitfinex实现
│ │ ├── live_coinbase/ # Coinbase实现
│ │ ├── live_dydx/ # dYdX实现
│ │ ├── live_hyperliquid/ # Hyperliquid实现
│ │ ├── live_bydfi/ # BYDFi实现
│ │ └── ... (73+ exchanges total) # 其他70+交易所
│ │
│ ├── ctp/ # CTP期货API [C++扩展]
│ │ ├── __init__.py # CTP包入口
│ │ ├── _ctp.so # SWIG编译的C++绑定
│ │ ├── ctp.py # SWIG生成的包装
│ │ ├── api/ # CTP API封装
│ │ │ ├── market_api.py # 行情API
│ │ │ └── trader_api.py # 交易API
│ │ ├── thostmduserapi_se.framework # macOS行情库
│ │ └── thosttraderapi_se.framework # macOS交易库
│ │
│ ├── functions/ # 功能函数 [业务逻辑]
│ │ ├── calculate_number.py # 数值计算 (Cython)
│ │ ├── timer_event.py # 定时器事件
│ │ └── ...
│ │
│ ├── utils/ # 工具函数 [辅助工具]
│ │ ├── tools.py # 通用工具
│ │ └── ...
│ │
│ ├── configs/ # 配置文件
│ │ └── account_config.yaml # 账户配置模板
│ │
│ ├── errors/ # 错误定义 (已弃用,使用exceptions.py)
│ │
│ └── exchange_registers/ # 交易所注册模块 [自动加载]
│ ├── register_binance.py # 注册Binance
│ ├── register_okx.py # 注册OKX
│ ├── register_htx.py # 注册HTX
│ ├── register_ctp.py # 注册CTP
│ ├── register_ib.py # 注册IB
│ └── ... # 其他交易所注册
│
├── tests/ # 测试套件 [质量保证]
│ ├── conftest.py # pytest配置和fixtures
│ │
│ ├── feeds/ # Feed测试
│ │ ├── test_live_binance_spot.py # Binance现货测试
│ │ ├── test_live_binance_swap.py # Binance合约测试
│ │ ├── test_live_okx_*.py # OKX测试
│ │ └── ...
│ │
│ ├── containers/ # 容器测试
│ │ ├── orders/
│ │ ├── tickers/
│ │ └── ...
│ │
│ ├── test_registry.py # Registry测试
│ ├── test_event_bus.py # EventBus测试
│ └── ... # 其他测试
│
├── docs/ # 文档 [用户指南]
│ ├── index.md # 文档主页
│ ├── requirements.txt # 文档依赖
│ │
│ ├── getting-started/ # 入门指南
│ │ ├── installation.md
│ │ ├── quickstart.md
│ │ └── ...
│ │
│ ├── guides/ # 使用指南
│ │ ├── usage_guide.md
│ │ ├── best_practices.md
│ │ └── ...
│ │
│ ├── reference/ # API参考
│ │ ├── bt_api.md
│ │ ├── registry.md
│ │ ├── data_containers.md
│ │ └── ...
│ │
│ ├── explanation/ # 深度解读
│ │ ├── architecture.md
│ │ └── ...
│ │
│ └── exchanges/ # 交易所文档
│ ├── binance/
│ ├── okx/
│ ├── ctp/
│ └── ib/
│
├── scripts/ # 脚本 [开发工具]
│ └── split_ctp_wrapper.py # CTP包装拆分脚本
│
├── configs/ # 项目配置 (示例)
│
├── examples/ # 示例代码
│
├── site/ # 文档站点
│
├── .github/ # GitHub配置
│ └── workflows/ # CI/CD工作流
│
├── pyproject.toml # 项目配置 [核心配置]
├── setup.py # 安装脚本 [构建配置]
├── Makefile # 常用命令 [开发工具]
├── scripts/run_tests.sh # 测试运行脚本 [测试工具]
├── conftest.py # pytest全局配置
├── README.md # 项目说明 [主要文档]
├── CONTRIBUTING.md # 贡献指南 [开发指南]
├── CHANGELOG.md # 变更日志
└── AGENTS.md # AI代理指南 [AI开发]
主要组件:
bt_api.py- BtApi主类,统一API入口registry.py- 交易所注册表,实现即插即用event_bus.py- 事件总线,支持发布/订阅模式exceptions.py- 完整的异常层次结构
设计模式:
- Registry Pattern(注册表模式)
- Event-Driven Architecture(事件驱动架构)
- Protocol-based Abstraction(协议抽象)
27种标准化容器:
- 市场数据:tickers, bars, orderbooks, markprices, fundingrates
- 交易数据:orders, trades, positions, balances, accounts
- 配置数据:symbols, exchanges, assets
- 特殊数据:greeks, liquidations, openinterests, pools
特点:
- 统一的接口(get_*方法)
- 自动初始化(AutoInitMixin)
- 交易所特定实现
73+交易所实现:
- 完整支持:Binance, HTX, CTP, IB
- REST API:17个交易所
- 已注册框架:40+个交易所
架构:
- 抽象协议(AbstractFeed)
- 统一注册机制
- 支持同步/异步/WebSocket三种模式
特点:
- SWIG C++绑定
- 平台特定库(Linux/Windows/macOS)
- 拆分包装(自动生成子模块)
支持:
- 上期所(SHFE)
- 大商所(DCE)
- 郑商所(CZCE)
- 中金所(CFFEX)
测试策略:
- 212个测试文件
- pytest + xdist(并行测试)
- 测试标记:unit, integration, slow, network
- 交易所特定标记:binance, okx, ctp, ib
覆盖率:
- 目标:>80%
- HTML报告:htmlcov/index.html
from bt_api_py import BtApi
api = BtApi(exchange_kwargs={...})
ticker = api.get_tick("BINANCE___SPOT", "BTCUSDT")from bt_api_py import ExchangeRegistry
ExchangeRegistry.register_feed("NEW___SPOT", NewFeed)
feed = ExchangeRegistry.create_feed("NEW___SPOT", queue)from bt_api_py import EventBus
bus = EventBus()
bus.subscribe("ticker", callback)
bus.publish("ticker", data)from bt_api_py.containers.orders import BinanceOrderData
order = BinanceOrderData(order_info, has_been_json_encoded=True)
order.init_data()
symbol = order.get_symbol()- Feed获取原始数据
- 创建对应的容器实例
- 调用init_data()解析
- 推送到data_queue
- 配置exchange_kwargs
- 调用统一API方法
- 获取标准化容器
- 处理数据或错误
- Feed发布市场事件
- 用户订阅感兴趣的事件
- 回调处理业务逻辑
containers/- 数据结构feeds/- 交易所集成functions/- 业务逻辑utils/- 工具函数
feeds/live_{exchange}/- 交易所特定实现containers/{type}/{exchange}_{type}.py- 交易所特定容器exchange_registers/register_{exchange}.py- 自动注册
ctp/- CTP特有功能configs/- 配置管理errors/- 错误处理(已废弃)
1. bt_api_py/feeds/live_{exchange}/
2. 实现AbstractFeed协议
3. bt_api_py/containers/中添加特定容器(如需要)
4. bt_api_py/exchange_registers/register_{exchange}.py
5. tests/feeds/test_live_{exchange}_*.py
1. bt_api_py/containers/{type}/
2. 创建基类{type}.py
3. 实现交易所特定类
4. tests/containers/{type}/
make test # 所有测试
make test-fast # 快速测试
pytest tests/test_file.py # 单个文件- 从
README.md和docs/getting-started/quickstart.md开始 - 查看
bt_api_py/bt_api.py了解主API - 阅读
bt_api_py/registry.py理解注册机制 - 研究
bt_api_py/containers/orders/学习容器模式
- 阅读
CONTRIBUTING.md了解贡献流程 - 查看
AGENTS.md了解代码风格 - 研究
tests/了解测试模式 - 参考现有交易所实现添加新交易所
- 优先阅读
AGENTS.md获取开发规则 - 查看
_bmad-output/project-context.md获取关键信息 - 遵循命名约定:
EXCHANGE___TYPE - 使用自定义异常,不要使用通用Exception
- 交易所:
EXCHANGE___TYPE(如BINANCE___SPOT) - 文件:snake_case (如
binance_order.py) - 类:PascalCase (如
BinanceOrderData) - 方法:snake_case (如
get_symbol)
- 开闭原则:通过Registry扩展,不修改核心
- 单一职责:每个容器负责一种数据类型
- 依赖倒置:依赖抽象协议,不依赖具体实现
- 使用自定义异常(从
bt_api_py.exceptions导入) - 不使用
assert进行错误检查 - 不使用通用
Exception
- 支持 Linux x86_64
- 支持 Windows x64
- 支持 macOS arm64/x86_64
functions/calculate_number.py- 关键计算优化- 编译为
.so或.pyd文件
- CTP使用SWIG绑定
- 平台特定的编译库
- aiohttp用于异步HTTP请求
- WebSocket用于实时数据流
- EventBus用于事件分发
- ✓ Registry注册和创建
- ✓ 数据容器初始化和解析
- ✓ 异常处理和错误传播
- ✓ EventBus发布/订阅
- ✓ 交易所Feed实现
- ✓ Binance完整测试
- ✓ HTX完整测试
- ✓ CTP完整测试
- ✓ IB完整测试
bt_api.py (主API)
├── registry.py (交易所注册)
├── event_bus.py (事件总线)
├── exceptions.py (错误处理)
└── containers/* (数据容器)
└── AutoInitMixin (基础类)
feeds/live_* (交易所实现)
├── abstract_feed.py (协议)
├── registry.py (注册)
└── containers/* (数据容器)
ctp/ (CTP扩展)
├── _ctp.so (C++绑定)
└── api/* (API封装)
- getting-started/ - 入门
- guides/ - 使用指南
- reference/ - API参考
- explanation/ - 深度解读
- exchanges/ - 交易所文档
- README.md - 项目说明
- CONTRIBUTING.md - 贡献指南
- AGENTS.md - AI代理指南
- _bmad-output/ - BMAD生成文档
项目特点:
- 🏗️ 清晰的分层架构(数据层/集成层/业务层)
- 🔌 即插即用的交易所扩展机制
- 📦 27种标准化数据容器
- 🌐 73+交易所支持
- ⚡ 三种API模式(同步/异步/WebSocket)
- 🧪 完善的测试覆盖(212个测试文件)
- 📚 完整的文档体系
代码质量:
- 遵循Python最佳实践
- 完整的类型提示
- 自定义异常体系
- 平台兼容性保证
- 性能优化(Cython/C++)
可扩展性:
- Registry模式支持无限扩展
- 抽象协议定义清晰接口
- 标准化容器便于复用
- 模块化设计易于维护