AmazingData是中国银河证券提供的金融数据接口包,拥有丰富的数据内容,包括股票、债券、基金、期货、期权、港股通等行情数据,以及公司财务、股东股本等基本面数据。通过API方式提供金融数据服务,以帮助用户简洁、轻量的使用相关数据。
从https://gitee.com/cgs2026/xysz/tree/master/xysz/xysz_tools下载tgw和AmazingData的安装包.
先clone整个项目,再用wheel文件安装tgw和AmazingData。
pip install tgw>=1.0.8.7
pip install AmazingData>=1.1.4
# Windows CMD
set AD_USERNAME=your_username
set AD_PASSWORD=your_password
set AD_HOST=server_ip
set AD_PORT=8600
# Windows PowerShell
$env:AD_USERNAME="your_username"
$env:AD_PASSWORD="your_password"
$env:AD_HOST="server_ip"
$env:AD_PORT="8600"
import os
import AmazingData as ad
ad.login(
username=os.environ['AD_USERNAME'],
password=os.environ['AD_PASSWORD'],
host=os.environ['AD_HOST'],
port=int(os.environ['AD_PORT'])
)
AmazingData有三个核心数据对象:
| 对象 | 实例化方式 | 用途 |
|------|------|------|
| BaseData | ad.BaseData() | 基础数据(代码表、交易日历、复权因子、ETF申赎清单等) |
| MarketData | ad.MarketData(calendar) | 历史行情数据(K线、快照),需传入交易日历 |
| InfoData | ad.InfoData() | 信息数据(财务、股东、融资融券、龙虎榜、可转债、ETF份额/IOPV、期权、指数等) |
支持两种数据获取方式(二选一,不可混用):
方案1:本地缓存(推荐,速度快)
local_path(绝对路径) + is_local(True/False)
方案2:指定日期范围(不缓存)
begin_date + end_date
| 分类 | 接口 | 函数名 | 说明 |
|------|------|------|------|
| 基础数据 | 每日最新代码表 | get_code_list | 获取最新证券代码列表 |
| 基础数据 | 每日最新证券信息 | get_code_info | 获取证券基本信息 |
| 基础数据 | 证券基础信息 | InfoData.get_stock_basic | 获取证券详细信息 |
| 基础数据 | 交易日历 | get_calendar | 获取交易日历 |
| 基础数据 | 复权因子 | get_backward_factor / get_adj_factor | 获取后复权/单次复权因子 |
| 基础数据 | 历史代码表 | get_hist_code_list | 获取历史代码表 |
| 基础数据 | 期货代码表 | get_future_code_list | 获取期货代码表 |
| 基础数据 | 期权代码表 | get_option_code_list | 获取期权代码表 |
| 基础数据 | 历史证券信息 | InfoData.get_history_stock_status | 获取历史证券信息 |
| 基础数据 | 北交所代码对照 | InfoData.get_bj_code_mapping | 获取北交所新旧代码对照 |
| 行情数据 | 历史K线 | query_kline | 获取历史K线数据 |
| 行情数据 | 历史快照 | query_snapshot | 获取历史快照数据 |
| 财务数据 | 资产负债表 | get_balance_sheet | 获取资产负债表 |
| 财务数据 | 现金流量表 | get_cash_flow | 获取现金流量表 |
| 财务数据 | 利润表 | get_income | 获取利润表 |
| 财务数据 | 业绩快报 | get_profit_express | 获取业绩快报 |
| 财务数据 | 业绩预告 | get_profit_notice | 获取业绩预告 |
| 股东数据 | 十大股东 | get_share_holder | 获取十大股东数据 |
| 股东数据 | 股东户数 | get_holder_num | 获取股东户数 |
| 股东数据 | 股本结构 | get_equity_structure | 获取股本结构 |
| 股东数据 | 分红数据 | get_dividend | 获取分红数据 |
| 股东数据 | 配股数据 | get_right_issue | 获取配股数据 |
| 股东数据 | 股权冻结质押 | get_equity_pledge_freeze | 获取股权冻结质押 |
| 股东数据 | 限售股解禁 | get_equity_restricted | 获取限售股解禁 |
| 融资融券 | 融资融券汇总 | get_margin_summary | 获取融资融券汇总 |
| 融资融券 | 融资融券明细 | get_margin_detail | 获取融资融券明细 |
| 交易数据 | 龙虎榜 | get_long_hu_bang | 获取龙虎榜数据 |
| 交易数据 | 大宗交易 | get_block_trading | 获取大宗交易数据 |
| 期权数据 | 期权基本资料 | get_option_basic_info | 获取期权基本资料 |
| 期权数据 | 期权标准合约属性 | get_option_std_ctr_specs | 获取期权标准合约属性 |
| 期权数据 | 期权月合约属性变动 | get_option_mon_ctr_specs | 获取期权月合约属性变动 |
| ETF数据 | ETF申赎清单 | BaseData.get_etf_pcf | 获取ETF申赎清单 |
| ETF数据 | ETF基金份额 | get_fund_share | 获取ETF基金份额 |
| ETF数据 | ETF每日收盘IOPV | get_fund_iopv | 获取ETF每日收盘IOPV |
| 交易所指数 | 交易所指数成分股 | get_index_constituent | 获取交易所指数成分股 |
| 交易所指数 | 交易所指数成分股日权重 | get_index_weight | 获取交易所指数成分股日权重 |
| 行业指数 | 行业指数基本信息 | get_industry_base_info | 获取行业指数基本信息 |
| 行业指数 | 行业指数成分股 | get_industry_constituent | 获取行业指数成分股 |
| 行业指数 | 行业指数成分股日权重 | get_industry_weight | 获取行业指数成分股日权重 |
| 行业指数 | 行业指数日行情 | get_industry_daily | 获取行业指数日行情 |
| 可转债数据 | 可转债发行 | get_kzz_issuance | 获取可转债发行数据 |
| 可转债数据 | 可转债份额 | get_kzz_share | 获取可转债份额 |
| 可转债数据 | 可转债转股 | get_kzz_conv | 获取可转债转股数据 |
| 可转债数据 | 可转债转股变动 | get_kzz_conv_change | 获取转股变动数据 |
| 可转债数据 | 可转债修正 | get_kzz_corr | 获取可转债修正 |
| 可转债数据 | 可转债赎回 | get_kzz_call | 获取可转债赎回 |
| 可转债数据 | 可转债回售 | get_kzz_put | 获取可转债回售 |
| 可转债数据 | 可转债回售赎回条款 | get_kzz_put_call_item | 获取回售赎回条款 |
| 可转债数据 | 可转债赎回条款执行说明 | get_kzz_call_explanation | 获取赎回条款执行说明 |
| 可转债数据 | 可转债回售条款执行说明 | get_kzz_put_explanation | 获取回售条款执行说明 |
| 可转债数据 | 可转债停复牌 | get_kzz_suspend | 获取可转债停复牌 |
| 债券数据 | 国债收益率 | get_treasury_yield | 获取国债收益率 |
详见 附录
EXTRA_STOCK_A: A股(上交所、深交所、北交所)
EXTRA_STOCK_A_SH_SZ: 沪深A股
SH_A / SZ_A / BJ_A: 单市场A股
EXTRA_ETF: ETF基金
EXTRA_KZZ: 可转债
EXTRA_INDEX_A: 指数(沪深北)
EXTRA_HKT: 港股通
EXTRA_GLRA: 逆回购
ZJ_FUTURE: 中金所期货
EXTRA_FUTURE: 所有期货
EXTRA_ETF_OP: ETF期权(上交所、深交所)
Period.min1.value ~ Period.min120.value: 分钟线
Period.day.value: 日线
Period.week.value: 周线
Period.month.value: 月线
Period.season.value: 季度线
Period.year.value: 年线
import os
import AmazingData as ad
ad.login(
username=os.environ['AMAZINGDATA_USER'],
password=os.environ['AMAZINGDATA_PASSWORD'],
host=os.environ['AMAZINGDATA_HOST'],
port=int(os.environ['AMAZINGDATA_PORT'])
)
base_data = ad.BaseData()
code_list = base_data.get_code_list(security_type='EXTRA_STOCK_A')
calendar = base_data.get_calendar()
market_data = ad.MarketData(calendar)
kline = market_data.query_kline(
code_list=['000001.SZ'],
begin_date=20240101,
end_date=20241231,
period=ad.constant.Period.day.value
)
info_data = ad.InfoData()
calendar = base_data.get_calendar()
today = calendar[-1]
all_code_list = base_data.get_hist_code_list(
security_type='EXTRA_STOCK_A_SH_SZ',
start_date=20130101,
end_date=today
)
balance_sheet = info_data.get_balance_sheet(all_code_list)
etf_code_list = base_data.get_code_list(security_type='EXTRA_ETF')
etf_pcf_info, etf_pcf_constituent = base_data.get_etf_pcf(etf_code_list)
kzz_code_list = base_data.get_code_list(security_type='EXTRA_KZZ')
kzz_issuance = info_data.get_kzz_issuance(kzz_code_list, is_local=False)
treasury_yield = info_data.get_treasury_yield(['m3', 'm6', 'y1', 'y2', 'y3', 'y5', 'y7', 'y10', 'y30'])
ad.login()登录
AD_USER、AD_PASSWORD、AD_HOST、AD_PORT
MarketData实例化时必须传入交易日历:ad.MarketData(base_data.get_calendar())
共 6 个版本