You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.1 KiB
7.1 KiB
AmazingData 数据源适配器
基于中国银河证券星耀数智量化平台 SDK 的封装,提供统一、简洁的金融数据获取接口。
功能特性
- 简洁的API设计: 封装复杂的SDK接口,提供直观的数据获取方法
- 类型安全: 使用Python类型注解,IDE友好的代码提示
- 灵活的配置: 支持本地缓存、参数自定义等配置选项
- 全面的数据覆盖: 支持行情、财务、股本、融资融券等多类金融数据
安装依赖
# 安装 AmazingData SDK (需从银河证券获取)
pip install tgw-1.*.*-py3-none-any.whl
pip install AmazingData-1.*.*-cp3x-none-any.whl
# 安装其他依赖
pip install pandas
快速开始
from amazing_data_adapter import create_adapter, SecurityType, Period
# 1. 创建适配器
adapter = create_adapter(
username='your_username',
password='your_password',
host='your_host',
port=8080,
local_path='./data_cache/', # 本地缓存路径
use_local_cache=True # 是否使用本地缓存
)
# 2. 连接数据源
if adapter.connect():
# 3. 获取数据
codes = adapter.get_code_list(SecurityType.STOCK_A)
kline = adapter.get_kline(
codes=['000001.SZ'],
start_date='20240101',
end_date='20241231',
period=Period.DAILY
)
# 4. 断开连接
adapter.disconnect()
功能模块
1. 基础数据
| 方法 | 说明 |
|---|---|
get_code_list(security_type) |
获取代码列表 |
get_code_info(security_type) |
获取证券基本信息 |
get_trading_calendar(market) |
获取交易日历 |
get_adj_factor(codes) |
获取单次复权因子 |
get_backward_factor(codes) |
获取后复权因子 |
2. 历史行情数据
| 方法 | 说明 |
|---|---|
get_kline(codes, start_date, end_date, period) |
获取K线数据 |
get_snapshot(codes, start_date, end_date) |
获取历史快照 |
支持的周期 (Period):
Period.MIN1- 1分钟Period.MIN5- 5分钟Period.MIN15- 15分钟Period.MIN30- 30分钟Period.MIN60- 60分钟Period.DAILY- 日线Period.WEEKLY- 周线Period.MONTHLY- 月线
3. 财务数据
| 方法 | 说明 |
|---|---|
get_balance_sheet(codes, start_date, end_date) |
资产负债表 |
get_cash_flow(codes, start_date, end_date) |
现金流量表 |
get_income_statement(codes, start_date, end_date) |
利润表 |
get_profit_express(codes, start_date, end_date) |
业绩快报 |
get_profit_notice(codes, start_date, end_date) |
业绩预告 |
4. 股东股本数据
| 方法 | 说明 |
|---|---|
get_top10_shareholders(codes, start_date, end_date) |
十大股东 |
get_shareholder_count(codes, start_date, end_date) |
股东户数 |
get_equity_structure(codes, start_date, end_date) |
股本结构 |
5. 融资融券数据
| 方法 | 说明 |
|---|---|
get_margin_summary(start_date, end_date) |
融资融券汇总 |
get_margin_detail(codes, start_date, end_date) |
个股融资融券明细 |
6. 交易异动数据
| 方法 | 说明 |
|---|---|
get_longhu_bang(codes, start_date, end_date) |
龙虎榜数据 |
get_block_trading(codes, start_date, end_date) |
大宗交易 |
7. 指数数据
| 方法 | 说明 |
|---|---|
get_index_constituents(codes) |
指数成分股 |
get_index_weights(codes, start_date, end_date) |
成分股权重 |
支持的指数:
000016.SH- 上证50000300.SH- 沪深300000905.SH- 中证500000906.SH- 中证800000852.SH- 中证1000
8. ETF数据
| 方法 | 说明 |
|---|---|
get_etf_pcf(codes) |
ETF申赎数据 |
get_fund_share(codes, start_date, end_date) |
基金份额 |
9. 可转债数据
| 方法 | 说明 |
|---|---|
get_kzz_issuance(codes) |
可转债发行数据 |
证券类型枚举
from amazing_data_adapter import 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期权
使用示例
获取历史K线数据
# 获取多只股票日线数据
kline_data = adapter.get_kline(
codes=['000001.SZ', '600000.SH'],
start_date='20240101',
end_date='20241231',
period=Period.DAILY
)
for code, df in kline_data.items():
print(f"{code}: {len(df)} 条数据")
print(df.head())
获取财务报表
# 获取资产负债表
balance_sheet = adapter.get_balance_sheet(
codes=['000001.SZ', '600000.SH'],
start_date=20240101,
end_date=20241231
)
for code, df in balance_sheet.items():
print(f"\n{code} 资产负债表:")
print(df[['REPORTING_PERIOD', 'TOTAL_ASSETS', 'TOTAL_CUR_ASSETS']])
获取指数成分股
# 获取沪深300成分股
constituents = adapter.get_index_constituents(['000300.SH'])
df = constituents['000300.SH']
print(f"沪深300成分股数量: {len(df)}")
print(df[['CON_CODE', 'INDATE', 'INDEX_NAME']].head())
批量数据处理
# 获取所有A股代码
all_codes = adapter.get_code_list(SecurityType.STOCK_A)
# 分批处理避免超时
batch_size = 50
for i in range(0, len(all_codes), batch_size):
batch_codes = all_codes[i:i+batch_size]
data = adapter.get_balance_sheet(batch_codes)
# 处理数据...
结合复权因子计算真实价格
# 获取K线和复权因子
kline = adapter.get_kline(['000001.SZ'], '20240101', '20241231')
adj_factor = adapter.get_backward_factor(['000001.SZ'])
df = kline['000001.SZ']
# 合并并计算复权价格
df['trade_date'] = df.index.strftime('%Y%m%d').astype(int)
df = df.merge(adj_factor[['000001.SZ']].reset_index(),
left_on='trade_date', right_on='index')
df['adj_close'] = df['close'] * df['000001.SZ']
数据缓存
适配器支持本地数据缓存,可大幅提升重复查询的速度:
adapter = create_adapter(
username='xxx',
password='xxx',
host='xxx',
port=8080,
local_path='./my_data_cache/', # 缓存目录
use_local_cache=True # 默认启用缓存
)
# 强制从服务器获取最新数据
adapter.get_kline(codes, start_date, end_date, is_local=False)
注意事项
-
账号权限: 使用本适配器需要先向中国银河证券申请开通星耀数智平台权限
-
日期格式: 支持多种日期格式:
int: 20240101str: "2024-01-01" 或 "20240101"date: datetime.date(2024, 1, 1)
-
错误处理: 所有方法在连接断开会抛出
RuntimeError,建议在外层做好异常处理 -
资源释放: 使用完毕后请调用
adapter.disconnect()断开连接
文件说明
amazing_data_adapter.py- 适配器主代码amazing_data_examples.py- 详细使用示例README.md- 本文档
API参考
详细的SDK接口文档请参考银河证券提供的《AmazingData开发手册》。