|
|
|
@ -0,0 +1,790 @@
|
|
|
|
|
|
|
|
# AmazingDataAdapter 接口文档
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
基于银河证券星耀数智量化平台 SDK 的 Python 适配器接口文档
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 目录
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. [快速开始](#快速开始)
|
|
|
|
|
|
|
|
2. [枚举类型](#枚举类型)
|
|
|
|
|
|
|
|
3. [接口列表](#接口列表)
|
|
|
|
|
|
|
|
- [基础数据接口](#基础数据接口)
|
|
|
|
|
|
|
|
- [历史行情接口](#历史行情接口)
|
|
|
|
|
|
|
|
- [财务数据接口](#财务数据接口)
|
|
|
|
|
|
|
|
- [股东股本接口](#股东股本接口)
|
|
|
|
|
|
|
|
- [融资融券接口](#融资融券接口)
|
|
|
|
|
|
|
|
- [交易异动接口](#交易异动接口)
|
|
|
|
|
|
|
|
- [指数数据接口](#指数数据接口)
|
|
|
|
|
|
|
|
- [ETF数据接口](#etf数据接口)
|
|
|
|
|
|
|
|
- [可转债数据接口](#可转债数据接口)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
import asyncio
|
|
|
|
|
|
|
|
from app.adapters.amazingdata_adapter import AmazingDataAdapter, SecurityType, Market
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
|
|
|
|
|
|
|
# 1. 创建适配器
|
|
|
|
|
|
|
|
adapter = AmazingDataAdapter()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 连接数据源
|
|
|
|
|
|
|
|
await adapter.connect({
|
|
|
|
|
|
|
|
"username": "your_username",
|
|
|
|
|
|
|
|
"password": "your_password",
|
|
|
|
|
|
|
|
"host": "your_host",
|
|
|
|
|
|
|
|
"port": 8600,
|
|
|
|
|
|
|
|
"local_path": "./amazing_data_cache/",
|
|
|
|
|
|
|
|
"use_local_cache": True
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 获取数据
|
|
|
|
|
|
|
|
klines = await adapter.fetch_klines(
|
|
|
|
|
|
|
|
symbol="000001.SZ",
|
|
|
|
|
|
|
|
start="20240101",
|
|
|
|
|
|
|
|
end="20241231",
|
|
|
|
|
|
|
|
freq="1d"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
print(f"获取到 {len(klines)} 条K线数据")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 断开连接
|
|
|
|
|
|
|
|
await adapter.close()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asyncio.run(main())
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 枚举类型
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### SecurityType - 证券类型
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 枚举值 | 说明 |
|
|
|
|
|
|
|
|
|--------|------|
|
|
|
|
|
|
|
|
| `SecurityType.STOCK_A` | 沪深A股 |
|
|
|
|
|
|
|
|
| `SecurityType.STOCK_A_SH_SZ` | 沪深A股(沪深) |
|
|
|
|
|
|
|
|
| `SecurityType.INDEX_A` | 沪深指数 |
|
|
|
|
|
|
|
|
| `SecurityType.ETF` | ETF |
|
|
|
|
|
|
|
|
| `SecurityType.FUTURE` | 期货 |
|
|
|
|
|
|
|
|
| `SecurityType.KZZ` | 可转债 |
|
|
|
|
|
|
|
|
| `SecurityType.GLRA` | 逆回购 |
|
|
|
|
|
|
|
|
| `SecurityType.HKT` | 港股通 |
|
|
|
|
|
|
|
|
| `SecurityType.ETF_OP` | ETF期权 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Market - 市场
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 枚举值 | 说明 |
|
|
|
|
|
|
|
|
|--------|------|
|
|
|
|
|
|
|
|
| `Market.SH` | 上海 |
|
|
|
|
|
|
|
|
| `Market.SZ` | 深圳 |
|
|
|
|
|
|
|
|
| `Market.BJ` | 北京 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 接口列表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 基础数据接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 1. fetch_klines - 获取历史K线
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def fetch_klines(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
symbol: str,
|
|
|
|
|
|
|
|
start: str,
|
|
|
|
|
|
|
|
end: str,
|
|
|
|
|
|
|
|
freq: str
|
|
|
|
|
|
|
|
) -> List[KLineData]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| symbol | str | 标的代码,如 "000001.SZ" |
|
|
|
|
|
|
|
|
| start | str | 开始日期,格式 YYYYMMDD |
|
|
|
|
|
|
|
|
| end | str | 结束日期,格式 YYYYMMDD |
|
|
|
|
|
|
|
|
| freq | str | 周期:1m/5m/15m/30m/60m/1d/1w/1M |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回数据 (KLineData):**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| symbol | str | 标的代码 |
|
|
|
|
|
|
|
|
| time | int | Unix时间戳 |
|
|
|
|
|
|
|
|
| open | float | 开盘价 |
|
|
|
|
|
|
|
|
| high | float | 最高价 |
|
|
|
|
|
|
|
|
| low | float | 最低价 |
|
|
|
|
|
|
|
|
| close | float | 收盘价 |
|
|
|
|
|
|
|
|
| volume | int | 成交量 |
|
|
|
|
|
|
|
|
| amount | float | 成交金额 |
|
|
|
|
|
|
|
|
| trade_date | str | 交易日 (YYYY-MM-DD) |
|
|
|
|
|
|
|
|
| is_limit_up | bool | 是否涨停 |
|
|
|
|
|
|
|
|
| is_limit_down | bool | 是否跌停 |
|
|
|
|
|
|
|
|
| total_market_cap | float | 总市值(元) |
|
|
|
|
|
|
|
|
| float_market_cap | float | 流通市值(元) |
|
|
|
|
|
|
|
|
| inst_holding_ratio | float | 机构持仓占比(%) |
|
|
|
|
|
|
|
|
| trading_days | int | 可交易日数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 2. fetch_symbols - 获取标的列表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def fetch_symbols(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
asset_type: str
|
|
|
|
|
|
|
|
) -> List[SymbolInfo]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| asset_type | str | 资产类型:stock/futures |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回数据 (SymbolInfo):**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| symbol_id | str | 标的代码 |
|
|
|
|
|
|
|
|
| name | str | 标的名称 |
|
|
|
|
|
|
|
|
| exchange | str | 交易所 |
|
|
|
|
|
|
|
|
| underlying | str | 期货品种代码 |
|
|
|
|
|
|
|
|
| contract_month | str | 合约月份 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 3. fetch_trading_calendar - 获取交易日历
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def fetch_trading_calendar(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
exchange: str,
|
|
|
|
|
|
|
|
start: str,
|
|
|
|
|
|
|
|
end: str
|
|
|
|
|
|
|
|
) -> List[TradeCalData]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| exchange | str | 交易所代码:SH/SZ |
|
|
|
|
|
|
|
|
| start | str | 开始日期 YYYYMMDD |
|
|
|
|
|
|
|
|
| end | str | 结束日期 YYYYMMDD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 4. get_code_info - 获取证券基本信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_code_info(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
security_type: SecurityType = SecurityType.STOCK_A
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| symbol | 证券简称 |
|
|
|
|
|
|
|
|
| security_status | 产品状态标志 |
|
|
|
|
|
|
|
|
| pre_close | 昨收价 |
|
|
|
|
|
|
|
|
| high_limited | 涨停价 |
|
|
|
|
|
|
|
|
| low_limited | 跌停价 |
|
|
|
|
|
|
|
|
| price_tick | 最小价格变动单位 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 5. get_trading_calendar - 获取交易日历(列表)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_trading_calendar(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
market: Market = Market.SH
|
|
|
|
|
|
|
|
) -> List[int]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回:** 交易日列表,格式 [20240102, 20240103, ...]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 6. get_adj_factor - 获取单次复权因子
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_adj_factor(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**参数说明:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
|
|
| codes | List[str] | 股票代码列表 |
|
|
|
|
|
|
|
|
| is_local | bool | 是否使用本地缓存 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回:** DataFrame (index: 日期, columns: 股票代码)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 7. get_backward_factor - 获取后复权因子
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_backward_factor(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 历史行情接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 8. get_snapshot - 获取历史快照
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_snapshot(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: str,
|
|
|
|
|
|
|
|
end_date: str
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**说明:** 获取Level-1行情快照数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 财务数据接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 9. get_balance_sheet - 资产负债表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_balance_sheet(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TOTAL_ASSETS | 资产总计 |
|
|
|
|
|
|
|
|
| TOTAL_CUR_ASSETS | 流动资产合计 |
|
|
|
|
|
|
|
|
| TOTAL_NONCUR_ASSETS | 非流动资产合计 |
|
|
|
|
|
|
|
|
| TOTAL_LIAB | 负债合计 |
|
|
|
|
|
|
|
|
| TOT_SHARE_EQUITY_INCL_MIN_INT | 股东权益合计 |
|
|
|
|
|
|
|
|
| CURRENCY_CAP | 货币资金 |
|
|
|
|
|
|
|
|
| NOTES_RECEIVABLE | 应收票据 |
|
|
|
|
|
|
|
|
| ACCT_RECEIVABLE | 应收账款 |
|
|
|
|
|
|
|
|
| INV | 存货 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 10. get_cash_flow - 现金流量表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_cash_flow(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| NET_CASH_FLOWS_OPERA_ACT | 经营活动现金流净额 |
|
|
|
|
|
|
|
|
| NET_CASH_FLOWS_INV_ACT | 投资活动现金流净额 |
|
|
|
|
|
|
|
|
| NET_CASH_FLOWS_FIN_ACT | 筹资活动现金流净额 |
|
|
|
|
|
|
|
|
| NET_INCR_CASH_AND_CASH_EQU | 现金及现金等价物净增加额 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 11. get_income_statement - 利润表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_income_statement(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TOT_OPERA_REV | 营业总收入 |
|
|
|
|
|
|
|
|
| OPERA_REV | 营业收入 |
|
|
|
|
|
|
|
|
| TOT_OPERA_COST | 营业总成本 |
|
|
|
|
|
|
|
|
| OPERA_PROFIT | 营业利润 |
|
|
|
|
|
|
|
|
| TOTAL_PROFIT | 利润总额 |
|
|
|
|
|
|
|
|
| NET_PRO_INCL_MIN_INT_INC | 净利润 |
|
|
|
|
|
|
|
|
| BASIC_EPS | 基本每股收益 |
|
|
|
|
|
|
|
|
| DILUTED_EPS | 稀释每股收益 |
|
|
|
|
|
|
|
|
| RD_EXP | 研发费用 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 12. get_profit_express - 业绩快报
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_profit_express(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TOTAL_ASSETS | 总资产 |
|
|
|
|
|
|
|
|
| NET_PRO_EXCL_MIN_INT_INC | 净利润 |
|
|
|
|
|
|
|
|
| TOT_OPERA_REV | 营业总收入 |
|
|
|
|
|
|
|
|
| TOTAL_PROFIT | 利润总额 |
|
|
|
|
|
|
|
|
| OPERA_PROFIT | 营业利润 |
|
|
|
|
|
|
|
|
| EPS_BASIC | 基本每股收益 |
|
|
|
|
|
|
|
|
| ROE_WEIGHTED | 净资产收益率-加权 |
|
|
|
|
|
|
|
|
| YOY_GR_NET_PROFIT_PARENT | 同比增长率 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 13. get_profit_notice - 业绩预告
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_profit_notice(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| P_TYPECODE | 业绩预告类型代码 |
|
|
|
|
|
|
|
|
| P_CHANGE_MAX | 预告净利润变动幅度上限 |
|
|
|
|
|
|
|
|
| P_CHANGE_MIN | 预告净利润变动幅度下限 |
|
|
|
|
|
|
|
|
| NET_PROFIT_MAX | 预告净利润上限(万元) |
|
|
|
|
|
|
|
|
| NET_PROFIT_MIN | 预告净利润下限(万元) |
|
|
|
|
|
|
|
|
| P_REASON | 业绩变动原因 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 股东股本接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 14. get_top10_shareholders - 十大股东
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_top10_shareholders(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| HOLDER_NAME | 股东名称 |
|
|
|
|
|
|
|
|
| HOLDER_QUANTITY | 持股数 |
|
|
|
|
|
|
|
|
| HOLDER_PCT | 持股比例(%) |
|
|
|
|
|
|
|
|
| HOLDER_HOLDER_CATEGORY | 股东性质(1:个人, 2:公司) |
|
|
|
|
|
|
|
|
| FLOAT_QTY | 流通股数量 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 15. get_shareholder_count - 股东户数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_shareholder_count(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| HOLDER_TOTAL_NUM | A股、B股、H股、境外股的总户数 |
|
|
|
|
|
|
|
|
| HOLDER_NUM | A股股东户数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 16. get_equity_structure - 股本结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_equity_structure(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TOT_SHARE | 总股本(万股) |
|
|
|
|
|
|
|
|
| FLOAT_SHARE | 流通股(万股) |
|
|
|
|
|
|
|
|
| FLOAT_A_SHARE | 流通A股(万股) |
|
|
|
|
|
|
|
|
| RESTRICTED_A_SHARE | 限售A股(万股) |
|
|
|
|
|
|
|
|
| TOT_RESTRICTED_SHARE | 限售股合计 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 融资融券接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 17. get_margin_summary - 融资融券汇总
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_margin_summary(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TRADE_DATE | 交易日期 |
|
|
|
|
|
|
|
|
| SUM_BORROW_MONEY_BALANCE | 融资余额(元) |
|
|
|
|
|
|
|
|
| SUM_PURCH_WITH_BORROW_MONEY | 融资买入额(元) |
|
|
|
|
|
|
|
|
| SUM_REPAYMENT_OF_BORROW_MONEY | 融资偿还额(元) |
|
|
|
|
|
|
|
|
| SUM_SEC_LENDING_BALANCE | 融券余额(元) |
|
|
|
|
|
|
|
|
| SUM_SALES_OF_BORROWED_SEC | 融券卖出量 |
|
|
|
|
|
|
|
|
| SUM_MARGIN_TRADE_BALANCE | 融资融券余额(元) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 18. get_margin_detail - 个股融资融券明细
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_margin_detail(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| BORROW_MONEY_BALANCE | 融资余额 |
|
|
|
|
|
|
|
|
| PURCH_WITH_BORROW_MONEY | 融资买入额 |
|
|
|
|
|
|
|
|
| REPAYMENT_OF_BORROW_MONEY | 融资偿还额 |
|
|
|
|
|
|
|
|
| SEC_LENDING_BALANCE | 融券余额 |
|
|
|
|
|
|
|
|
| SALES_OF_BORROWED_SEC | 融券卖出量 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 交易异动接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 19. get_longhu_bang - 龙虎榜数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_longhu_bang(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TRADE_DATE | 交易日期 |
|
|
|
|
|
|
|
|
| REASON_TYPE_NAME | 上榜原因 |
|
|
|
|
|
|
|
|
| CHANGE_RANGE | 涨跌幅(%) |
|
|
|
|
|
|
|
|
| TRADER_NAME | 营业部名称 |
|
|
|
|
|
|
|
|
| BUY_AMOUNT | 买入金额(元) |
|
|
|
|
|
|
|
|
| SELL_AMOUNT | 卖出金额(元) |
|
|
|
|
|
|
|
|
| FLOW_MARK | 买卖表示(1买入, 2卖出) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 20. get_block_trading - 大宗交易
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_block_trading(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> pd.DataFrame
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| TRADE_DATE | 交易日期 |
|
|
|
|
|
|
|
|
| B_SHARE_PRICE | 成交价(元) |
|
|
|
|
|
|
|
|
| B_SHARE_VOLUME | 成交量(万股) |
|
|
|
|
|
|
|
|
| B_SHARE_AMOUNT | 成交金额(万元) |
|
|
|
|
|
|
|
|
| B_BUYER_NAME | 买方营业部名称 |
|
|
|
|
|
|
|
|
| B_SELLER_NAME | 卖方营业部名称 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 指数数据接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 21. get_index_constituents - 指数成分股
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_index_constituents(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**支持指数:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 代码 | 名称 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| 000016.SH | 上证50 |
|
|
|
|
|
|
|
|
| 000300.SH | 沪深300 |
|
|
|
|
|
|
|
|
| 000905.SH | 中证500 |
|
|
|
|
|
|
|
|
| 000906.SH | 中证800 |
|
|
|
|
|
|
|
|
| 000852.SH | 中证1000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| INDEX_CODE | 指数代码 |
|
|
|
|
|
|
|
|
| CON_CODE | 成分股代码 |
|
|
|
|
|
|
|
|
| INDATE | 纳入日期 |
|
|
|
|
|
|
|
|
| OUTDATE | 剔除日期 |
|
|
|
|
|
|
|
|
| INDEX_NAME | 指数名称 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 22. get_index_weights - 成分股权重
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_index_weights(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| INDEX_CODE | 指数代码 |
|
|
|
|
|
|
|
|
| CON_CODE | 标的代码 |
|
|
|
|
|
|
|
|
| TRADE_DATE | 生效日期 |
|
|
|
|
|
|
|
|
| WEIGHT | 权重(%) |
|
|
|
|
|
|
|
|
| CLOSE | 收盘价 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### ETF数据接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 23. get_etf_pcf - ETF申赎数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_etf_pcf(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str]
|
|
|
|
|
|
|
|
) -> Tuple[pd.DataFrame, Dict[str, pd.DataFrame]]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**返回:** (etf_info, etf_constituents)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**etf_info字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| creation_redemption_unit | 每个篮子对应的ETF份数 |
|
|
|
|
|
|
|
|
| max_cash_ratio | 最大现金替代比例 |
|
|
|
|
|
|
|
|
| creation | 是否允许申购 |
|
|
|
|
|
|
|
|
| redemption | 是否允许赎回 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**etf_constituents字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| underlying_symbol | 成份证券简称 |
|
|
|
|
|
|
|
|
| component_share | 成份证券数量 |
|
|
|
|
|
|
|
|
| substitute_flag | 现金替代标志 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 24. get_fund_share - 基金份额
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_fund_share(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
start_date: Optional[str] = None,
|
|
|
|
|
|
|
|
end_date: Optional[str] = None,
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| FUND_SHARE | 基金份额(万份) |
|
|
|
|
|
|
|
|
| TOTAL_SHARE | 基金总份额(万份) |
|
|
|
|
|
|
|
|
| FLOAT_SHARE | 流通份额(万份) |
|
|
|
|
|
|
|
|
| CHANGE_REASON | 份额变动原因 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 可转债数据接口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 25. get_kzz_issuance - 可转债发行数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
async def get_kzz_issuance(
|
|
|
|
|
|
|
|
self,
|
|
|
|
|
|
|
|
codes: List[str],
|
|
|
|
|
|
|
|
is_local: Optional[bool] = None
|
|
|
|
|
|
|
|
) -> Dict[str, pd.DataFrame]
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**主要字段:**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段 | 说明 |
|
|
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
|
|
| STOCK_CODE | 正股代码 |
|
|
|
|
|
|
|
|
| LISTED_DATE | 上市日期 |
|
|
|
|
|
|
|
|
| PLAN_SCHEDULE | 方案进度 |
|
|
|
|
|
|
|
|
| CLAUSE_INI_CONV_PRICE | 初始转换价格 |
|
|
|
|
|
|
|
|
| LIST_ISSUE_SIZE | 发行规模(万元) |
|
|
|
|
|
|
|
|
| LIST_ISSUE_QUANTITY | 发行数量(万张) |
|
|
|
|
|
|
|
|
| TERM_YEAR | 借款期限(年) |
|
|
|
|
|
|
|
|
| COUPON_RATE | 利率(%) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 示例1:获取股票K线并判断是否涨停
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
import asyncio
|
|
|
|
|
|
|
|
from app.adapters.amazingdata_adapter import AmazingDataAdapter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
|
|
|
|
|
|
|
adapter = AmazingDataAdapter()
|
|
|
|
|
|
|
|
await adapter.connect({
|
|
|
|
|
|
|
|
"username": "xxx", "password": "xxx",
|
|
|
|
|
|
|
|
"host": "xxx", "port": 8600
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 获取K线
|
|
|
|
|
|
|
|
klines = await adapter.fetch_klines("000001.SZ", "20240101", "20241231", "1d")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for k in klines:
|
|
|
|
|
|
|
|
print(f"日期: {k.trade_date}, 收盘: {k.close}, "
|
|
|
|
|
|
|
|
f"涨停: {k.is_limit_up}, 跌停: {k.is_limit_down}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await adapter.close()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asyncio.run(main())
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 示例2:获取财务报表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
# 获取资产负债表
|
|
|
|
|
|
|
|
balance = await adapter.get_balance_sheet(
|
|
|
|
|
|
|
|
codes=["000001.SZ", "600000.SH"],
|
|
|
|
|
|
|
|
start_date="20240930",
|
|
|
|
|
|
|
|
end_date="20240930"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for code, df in balance.items():
|
|
|
|
|
|
|
|
print(f"{code} 总资产: {df['TOTAL_ASSETS'].values[0]}")
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 示例3:获取指数成分股
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
# 沪深300成分股
|
|
|
|
|
|
|
|
constituents = await adapter.get_index_constituents(["000300.SH"])
|
|
|
|
|
|
|
|
df = constituents["000300.SH"]
|
|
|
|
|
|
|
|
print(f"成分股数量: {len(df)}")
|
|
|
|
|
|
|
|
print(df[["CON_CODE", "INDATE"]].head())
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 示例4:获取龙虎榜数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
|
|
longhu = await adapter.get_longhu_bang(
|
|
|
|
|
|
|
|
codes=["000001.SZ"],
|
|
|
|
|
|
|
|
start_date="20240101",
|
|
|
|
|
|
|
|
end_date="20241231"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
print(longhu[["TRADE_DATE", "REASON_TYPE_NAME", "BUY_AMOUNT", "SELL_AMOUNT"]])
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. **连接管理**: 使用前先调用 `connect()`,使用后调用 `close()`
|
|
|
|
|
|
|
|
2. **日期格式**: 支持 `YYYYMMDD`、`"YYYY-MM-DD"` 或 `date` 对象
|
|
|
|
|
|
|
|
3. **本地缓存**: 默认启用,可设置 `is_local=False` 强制从服务器获取
|
|
|
|
|
|
|
|
4. **批量处理**: 大量数据建议分批获取,每批 50-100 个代码
|
|
|
|
|
|
|
|
5. **错误处理**: 连接断开会抛出 `RuntimeError`,需做好异常处理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**文档版本**: 1.0
|
|
|
|
|
|
|
|
**更新日期**: 2024-03-11
|