# AmazingData Adapter 接口调用关系 (完整版)
## 一、核心适配器接口
### 1.1 fetch_klines / _fetch_klines_sync (最复杂)
```
fetch_klines (async)
└── _fetch_klines_sync (sync)
├── _market_data.query_kline() [第1次SDK调用]
├── _base_data.get_code_info() [第2次SDK调用 - 涨跌停价]
├── _info_data.get_equity_structure() [第3次SDK调用 - 股本结构]
├── _base_data.get_calendar() [第4次SDK调用 - 交易日历]
└── _get_list_date() [内部方法]
├── _base_data.get_code_info() [可能第5次SDK调用]
└── _base_data.get_hist_code_list() [可能第6次SDK调用]
```
| 调用层次 | 方法 | SDK调用次数 | 说明 |
|---------|------|------------|------|
| 外层 | `fetch_klines` | 1 | async入口 |
| 内层 | `_fetch_klines_sync` | 4-6次 | 包含K线+扩展字段获取 |
**总计 SDK 调用**: 4-6 次(取决于 `_get_list_date` 的执行路径)
---
### 1.2 其他核心接口
| 序号 | 公共接口 | 同步方法 | SDK 调用 | 次数 | 说明 |
|------|----------|----------|----------|------|------|
| 1 | `connect` | - | `_market_data.login()` | 1 | 连接数据源 |
| 2 | `close` | - | - | 0 | 关闭连接 |
| 3 | `subscribe_ticks` | - | - | 0 | 订阅实时Tick |
| 4 | `fetch_symbols` | `_fetch_symbols_sync` | `_base_data.get_code_list()`
`_base_data.get_code_info()` | 2 | 股票标的列表 |
| 4b| `fetch_symbols` | `_fetch_symbols_sync` | `_base_data.get_future_code_list()`
`_base_data.get_future_info()` | 2 | 期货标的列表 |
| 5 | `fetch_trading_calendar` | `_fetch_calendar_sync` | `_base_data.get_calendar()` | 1 | 交易日历 |
| 6 | `health_check` | - | `_market_data.is_login()` | 1 | 健康检查 |
---
## 二、新增分表数据接口 (详细调用链)
### 2.1 fetch_kline_base / _fetch_kline_base_sync
```
fetch_kline_base (async)
└── _fetch_kline_base_sync (sync)
└── _market_data.query_kline() [第1次SDK调用]
```
| 调用层次 | 方法 | SDK调用次数 | 说明 |
|---------|------|------------|------|
| 外层 | `fetch_kline_base` | 1 | async入口 |
| 内层 | `_fetch_kline_base_sync` | 1 | 仅基础K线 |
**总计 SDK 调用**: 1 次
---
### 2.2 fetch_kline_quote / _fetch_kline_quote_sync
```
fetch_kline_quote (async)
└── _fetch_kline_quote_sync (sync)
├── _market_data.query_kline() [第1次SDK调用 - 扩展日期范围]
└── _base_data.get_code_info() [第2次SDK调用 - 涨跌停价]
```
| 调用层次 | 方法 | SDK调用次数 | 说明 |
|---------|------|------------|------|
| 外层 | `fetch_kline_quote` | 2 | async入口 |
| 内层 | `_fetch_kline_quote_sync` | 2 | K线+涨跌停价 |
**总计 SDK 调用**: 2 次
---
### 2.3 fetch_kline_finance / _fetch_kline_finance_sync
```
fetch_kline_finance (async)
└── _fetch_kline_finance_sync (sync)
├── _info_data.get_equity_structure() [第1次SDK调用 - 股本结构]
└── _market_data.query_kline() [第2次SDK调用 - 价格数据]
```
| 调用层次 | 方法 | SDK调用次数 | 说明 |
|---------|------|------------|------|
| 外层 | `fetch_kline_finance` | 2 | async入口 |
| 内层 | `_fetch_kline_finance_sync` | 2 | 股本+价格计算市值 |
**总计 SDK 调用**: 2 次
---
### 2.4 fetch_stock_basic_info / _fetch_stock_basic_info_sync
```
fetch_stock_basic_info (async)
└── _fetch_stock_basic_info_sync (sync)
├── _base_data.get_code_list() [第1次SDK调用 - 代码列表]
├── _base_data.get_code_info() [第2次SDK调用 - 名称/交易所]
└── 循环每个股票:
└── _info_data.get_equity_structure() [第3次SDK调用 - 上市日期]
```
| 调用层次 | 方法 | SDK调用次数 | 说明 |
|---------|------|------------|------|
| 外层 | `fetch_stock_basic_info` | 2+N | async入口,N为股票数量 |
| 内层 | `_fetch_stock_basic_info_sync` | 2+N | 基础信息+上市日期 |
**总计 SDK 调用**: 2 + N 次(N = 股票数量,每个股票调用一次 get_equity_structure)
---
## 三、财务/股东数据接口
| 序号 | 公共接口 | SDK 调用 | 次数 | 说明 |
|------|----------|----------|------|------|
| 7 | `get_balance_sheet` | `_info_data.get_balance_sheet()` | 1 | 资产负债表 |
| 8 | `get_cash_flow` | `_info_data.get_cash_flow()` | 1 | 现金流量表 |
| 9 | `get_income_statement` | `_info_data.get_income_statement()` | 1 | 利润表 |
| 10 | `get_profit_express` | `_info_data.get_profit_express()` | 1 | 业绩预告 |
| 11 | `get_profit_notice` | `_info_data.get_profit_notice()` | 1 | 业绩快报 |
| 12 | `get_top10_shareholders` | `_info_data.get_share_holder()` | 1 | 前十大股东 |
| 13 | `get_shareholder_count` | `_info_data.get_holder_num()` | 1 | 股东户数 |
| 14 | `get_equity_structure` | `_info_data.get_equity_structure()` | 1 | 股本结构 |
---
## 四、市场数据接口
| 序号 | 公共接口 | SDK 调用 | 次数 | 说明 |
|------|----------|----------|------|------|
| 15 | `get_snapshot` | `_market_data.query_kline()` | 1 | 快照数据 |
| 16 | `get_adj_factor` | `_base_data.get_adj_factor()` | 1 | 复权因子 |
| 17 | `get_backward_factor` | `_base_data.get_backward_factor()` | 1 | 后复权因子 |
| 18 | `get_index_constituents` | `_info_data.get_index_constituent()` | 1 | 指数成分股 |
| 19 | `get_index_weights` | `_info_data.get_index_weight()` | 1 | 指数权重 |
| 20 | `get_margin_summary` | `_info_data.get_margin_summary()` | 1 | 融资融券汇总 |
| 21 | `get_margin_detail` | `_info_data.get_margin_detail()` | 1 | 融资融券明细 |
| 22 | `get_longhu_bang` | `_info_data.get_long_hu_bang()` | 1 | 龙虎榜 |
| 23 | `get_block_trading` | `_info_data.get_block_trading()` | 1 | 大宗交易 |
---
## 五、基金/可转债接口
| 序号 | 公共接口 | SDK 调用 | 次数 | 说明 |
|------|----------|----------|------|------|
| 24 | `get_etf_pcf` | `_base_data.get_etf_pcf()` | 1 | ETF申购赎回清单 |
| 25 | `get_fund_share` | `_info_data.get_fund_share()` | 1 | 基金份额 |
| 26 | `get_kzz_issuance` | `_info_data.get_kzz_issuance()` | 1 | 可转债发行 |
---
## 六、接口调用次数汇总表
| 接口方法 | SDK 调用次数 | 调用的 SDK 方法 |
|----------|-------------|----------------|
| `fetch_klines` | **4-6次** | `query_kline` + `get_code_info` (1-2次) + `get_equity_structure` + `get_calendar` + `get_hist_code_list` (可选) |
| `fetch_symbols` (stock) | **2次** | `get_code_list` + `get_code_info` |
| `fetch_symbols` (futures) | **2次** | `get_future_code_list` + `get_future_info` |
| `fetch_trading_calendar` | **1次** | `get_calendar` |
| `fetch_kline_base` | **1次** | `query_kline` |
| `fetch_kline_quote` | **2次** | `query_kline` + `get_code_info` |
| `fetch_kline_finance` | **2次** | `get_equity_structure` + `query_kline` |
| `fetch_stock_basic_info` | **2+N次** | `get_code_list` + `get_code_info` + N×`get_equity_structure` |
| 其他单个数据接口 | **1次** | 对应单个 SDK 方法 |
---
## 七、SDK 对象与方法汇总
### _market_data (市场数据)
| 方法 | 调用次数 | 使用场景 |
|------|---------|----------|
| `login()` | 1 | connect |
| `query_kline()` | 多次 | K线数据获取 |
| `is_login()` | 1 | health_check |
### _base_data (基础数据)
| 方法 | 调用次数 | 使用场景 |
|------|---------|----------|
| `get_code_list()` | 多次 | 股票代码列表 |
| `get_code_info()` | 最频繁 | 代码信息、涨跌停价、上市日期 |
| `get_calendar()` | 多次 | 交易日历 |
| `get_adj_factor()` | 按需 | 复权因子 |
| `get_future_code_list()` | 按需 | 期货代码列表 |
| `get_etf_pcf()` | 按需 | ETF数据 |
| `get_hist_code_list()` | 可选 | 历史代码列表(备选) |
### _info_data (信息数据)
| 方法 | 调用次数 | 使用场景 |
|------|---------|----------|
| `get_equity_structure()` | 最频繁 | 股本结构、上市日期推断 |
| `get_income_statement()` | 按需 | 利润表 |
| `get_balance_sheet()` | 按需 | 资产负债表 |
| `get_cash_flow()` | 按需 | 现金流量表 |
| `get_share_holder()` | 按需 | 股东数据 |
| `get_margin_summary/detail()` | 按需 | 融资融券 |
| `get_index_constituent/weight()` | 按需 | 指数数据 |
---
## 八、接口统计
| 类别 | 接口数量 | 说明 |
|------|----------|------|
| 核心适配器接口 | 6 | connect/close/subscribe_ticks/fetch_klines/fetch_symbols/fetch_trading_calendar/health_check |
| 财务/股东数据接口 | 8 | 各类财务报表和股东数据 |
| 市场数据接口 | 9 | K线、指数、融资融券等 |
| 基金/可转债接口 | 3 | ETF、基金、可转债 |
| 新增分表数据接口 | 4 | 拆分表专用接口 |
| **总计** | **30** | 公共接口方法 |
**调用复杂度分级**:
- ⭐ 简单 (1次SDK调用): fetch_kline_base, get_balance_sheet, get_cash_flow 等
- ⭐⭐ 中等 (2次SDK调用): fetch_symbols, fetch_kline_quote, fetch_kline_finance 等
- ⭐⭐⭐ 复杂 (4-6次SDK调用): **fetch_klines** (原K线获取接口)
- ⭐⭐⭐⭐ 最复杂 (2+N次SDK调用): **fetch_stock_basic_info** (N=股票数量)