Skip to content

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 Adapterspytdx通达信行情接口
AkShare Adaptersakshare开源金融数据
EFinance Adaptersefinance东方财富数据
THS Adapters-HTTP 请求
Exchange Adapters-HTTP 请求
Jisilu Adaptersselenium浏览器自动化

组件职责

TdxBaseAdapter

  • 基础连接管理
  • 连接池管理
  • IP 选择
  • 健康检查

TdxStockAdapter

  • 股票日线获取
  • 股票分钟线获取
  • 股票列表获取

AkShareAdapter

  • 通用 HTTP 请求
  • 限速控制
  • 错误处理
  • 响应解析

EastMoneyAdapter

  • 资金流向数据
  • 股票分析数据
  • 投顾数据爬取

相关文档