DataSource Adapters 模块 - 架构文档
概述
Adapters 模块采用适配器模式(Adapter Pattern)为不同数据源提供统一接口。
整体架构
┌─────────────────────────────────────────────────────────────────────────┐
│ DataSource Adapters │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ TDX Adapters │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Stock │ │ Index │ │ Future │ │ Bond │ │ │
│ │ │ Adapter │ │ Adapter │ │ Adapter │ │ Adapter │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Option │ │ Realtime │ │Transaction │ │ Macro │ │ │
│ │ │ Adapter │ │ Adapter │ │ Adapter │ │ Adapter │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ AkShare Adapters │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Stock │ │ Bond │ │ HKStock │ │ Index │ │ │
│ │ │ Adapter │ │ Adapter │ │ Adapter │ │ Adapter │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Other Adapters │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ EFinance │ │ EastMoney │ │ THS │ │ Exchange │ │ │
│ │ │ Adapter │ │ Adapter │ │ Adapter │ │ Adapter │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘TDX 适配器架构
连接管理
┌─────────────────────────────────────┐
│ TdxConnectionPool │
├─────────────────────────────────────┤
│ max_size: 10 │
│ min_size: 2 │
│ timeout: 30s │
├─────────────────────────────────────┤
│ ┌─────────────────────────────┐ │
│ │ Connection Manager │ │
│ │ - _available_connections │ │
│ │ - _used_connections │ │
│ │ - _lock │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ IP Selector │ │
│ │ - get_best_ip() │ │
│ │ - validate_ip() │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘TDX 数据流
用户请求
│
▼
TdxStockAdapter.get_security_bars()
│
▼
从连接池获取连接
│
▼
调用 pytdx API
│
▼
数据格式化处理
│
▼
返回 pandas DataFrame
│
▼
释放连接回连接池AkShare 适配器架构
┌─────────────────────────────────────┐
│ AkShareAdapter (Base) │
├─────────────────────────────────────┤
│ rate_limit: 10 req/s │
│ retry: 3 │
│ timeout: 30s │
├─────────────────────────────────────┤
│ _request(method, params) │
│ _parse_response() │
│ _handle_error() │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Specific Adapters │
│ StockAdapter, BondAdapter, etc. │
└─────────────────────────────────────┘东方财富适配器架构
┌─────────────────────────────────────┐
│ EastMoney Adapters │
├─────────────────────────────────────┤
│ fundflow.py │
│ ├── get_stock_fund_flow() │
│ ├── get_stock_fund_flow_batch() │
│ └── crawl_eastmoney_fund_flow() │
├─────────────────────────────────────┤
│ analysis.py │
│ └── get_stock_analysis() │
├─────────────────────────────────────┤
│ fxs_invest.py │
│ └── get_easymonery_fxs_invest() │
└─────────────────────────────────────┘同花顺适配器架构
┌─────────────────────────────────────┐
│ THS Adapters │
├─────────────────────────────────────┤
│ stock_day.py │
│ ├── get_stock_day() │
│ └── get_stock_day_in_year() │
├─────────────────────────────────────┤
│ block.py │
│ └── get_stock_block() │
├─────────────────────────────────────┤
│ fund_position.py │
│ ├── get_fund_position_from_ths() │
│ └── save_ths_fund_position() │
└─────────────────────────────────────┘交易所适配器架构
┌─────────────────────────────────────┐
│ Exchange Adapters │
├─────────────────────────────────────┤
│ margin.py │
│ ├── get_sh_margin() # 上海 │
│ ├── get_sz_margin() # 深圳 │
│ └── get_margin_all() # 全部 │
└─────────────────────────────────────┘集思录适配器架构
┌─────────────────────────────────────┐
│ Jisilu Adapters │
├─────────────────────────────────────┤
│ Selenium Browser Integration │
│ ├── create_browser() │
│ ├── login() │
│ └── get_cbnewlist() │
├─────────────────────────────────────┤
│ Web Scraping for CB Data │
│ - 可转债列表 │
│ - 溢价率数据 │
│ - 到期收益率 │
└─────────────────────────────────────┘依赖关系
| 组件 | 依赖库 | 说明 |
|---|---|---|
| TDX Adapters | pytdx | 通达信行情接口 |
| AkShare Adapters | akshare | 开源金融数据 |
| EFinance Adapters | efinance | 东方财富数据 |
| THS Adapters | - | HTTP 请求 |
| Exchange Adapters | - | HTTP 请求 |
| Jisilu Adapters | selenium | 浏览器自动化 |
组件职责
TdxBaseAdapter
- 基础连接管理
- 连接池管理
- IP 选择
- 健康检查
TdxStockAdapter
- 股票日线获取
- 股票分钟线获取
- 股票列表获取
AkShareAdapter
- 通用 HTTP 请求
- 限速控制
- 错误处理
- 响应解析
EastMoneyAdapter
- 资金流向数据
- 股票分析数据
- 投顾数据爬取