akshare学习(四)
AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。
一、 AKShare 简介
定位:AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。
akshare官网:Welcome to AKShare's Online Documentation! — AKShare 1.16.62 文档
特点:数据源丰富、接口简洁、支持主流数据格式(如 Pandas DataFrame)。
适用场景:量化交易、数据分析、学术研究等。
二、安装与配置
安装 AKShare
pip install akshare --upgrade
依赖库安装
AKShare 依赖 pandas, requests 等库,若未自动安装,可手动安装。
三、股票数据复权
-
为何要复权:由于股票存在配股、分拆、合并和发放股息等事件,会导致股价出现较大的缺口。 若使用不复权的价格处理数据、计算各种指标,将会导致它们失去连续性,且使用不复权价格计算收益也会出现错误。 为了保证数据连贯性,常通过前复权和后复权对价格序列进行调整。
-
前复权:保持当前价格不变,将历史价格进行增减,从而使股价连续。 前复权用来看盘非常方便,能一眼看出股价的历史走势,叠加各种技术指标也比较顺畅,是各种行情软件默认的复权方式。 这种方法虽然很常见,但也有两个缺陷需要注意。
2.1 为了保证当前价格不变,每次股票除权除息,均需要重新调整历史价格,因此其历史价格是时变的。 这会导致在不同时点看到的历史前复权价可能出现差异。(所谓除权,就是公司在送股、转股、配股后,由于总股数增加,但公司内在价值并无变化,因此需要将每股股价下调来保持总市值不变。)
2.2 对于有持续分红的公司来说,前复权价可能出现负值。
-
后复权:保证历史价格不变,在每次股票权益事件发生后,调整当前的股票价格。 后复权价格和真实股票价格可能差别较大,不适合用来看盘。 其优点在于,可以被看作投资者的长期财富增长曲线,反映投资者的真实收益率情况。
-
在量化投资研究中普遍采用后复权数据。
四、A股-历史行情数据
1、历史行情数据-东财
接口:stock_zh_a_hist
目标:单次返回指定沪深京 A 股上市公司、指定周期和指定日期间的历史行情日频率数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='603777'; 股票代码可以在 ak.stock_zh_a_spot_em() 中获取 |
period | str | period='daily'; choice of {'daily', 'weekly', 'monthly'} |
start_date | str | start_date='20210301'; 开始查询的日期 |
end_date | str | end_date='20210616'; 结束查询的日期 |
adjust | str | 默认返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据 |
timeout | float | timeout=None; 默认不设置超时参数 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
日期 | object | 交易日 |
股票代码 | object | 不带市场标识的股票代码 |
开盘 | float64 | 开盘价 |
收盘 | float64 | 收盘价 |
最高 | float64 | 最高价 |
最低 | float64 | 最低价 |
成交量 | int64 | 注意单位: 手 |
成交额 | float64 | 注意单位: 元 |
振幅 | float64 | 注意单位: % |
涨跌幅 | float64 | 注意单位: % |
涨跌额 | float64 | 注意单位: 元 |
换手率 | float64 | 注意单位: % |
2、历史行情数据-新浪
接口:stock_zh_a_daily(访问有限制)stock_zh_a_hist (数据质量高, 访问无限制)
目标:单次返回指定沪深京 A 股上市公司指定日期间的历史行情日频率数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='sh600000'; 股票代码可以在 ak.stock_zh_a_spot() 中获取 |
start_date | str | start_date='20201103'; 开始查询的日期 |
end_date | str | end_date='20201116'; 结束查询的日期 |
adjust | str | 默认返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; qfq-factor: 返回前复权因子 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
date | object | 交易日 |
open | float64 | 开盘价 |
high | float64 | 最高价 |
low | float64 | 最低价 |
close | float64 | 收盘价 |
volume | float64 | 成交量; 注意单位: 股 |
amount | float64 | 成交额; 注意单位: 元 |
outstanding_share | float64 | 流动股本; 注意单位: 股 |
turnover | float64 | 换手率=成交量/流动股本 |
3、历史行情数据-腾讯
接口:stock_zh_a_hist_tx
目标:单次返回指定沪深京 A 股上市公司、指定周期和指定日期间的历史行情日频率数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='sz000001'; 带市场标识 |
start_date | str | start_date='19000101'; 开始查询的日期 |
end_date | str | end_date='20500101'; 结束查询的日期 |
adjust | str | 默认返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据 |
timeout | float | timeout=None; 默认不设置超时参数 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
date | object | 交易日 |
open | float64 | 开盘价 |
close | float64 | 收盘价 |
high | float64 | 最高价 |
low | float64 | 最低价 |
amount | int64 | 注意单位: 手 |
4、 分时数据-新浪
接口:stock_zh_a_minute
目标:单次返回指定股票或指数的指定频率的最近交易日的历史分时行情数据; 注意调用频率
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='sh000300'; 同日频率数据接口 |
period | str | period='1'; 获取 1, 5, 15, 30, 60 分钟的数据频率 |
adjust | str | adjust=""; 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
day | object | 交易日 |
open | float64 | 开盘价 |
high | float64 | 最高价 |
low | float64 | 最低价 |
close | float64 | 收盘价 |
volume | float64 | 成交量 |
5、分时数据-东财
接口:stock_zh_a_hist_min_em
目标:单次返回指定股票、频率、复权调整和时间区间的分时数据, 其中 1 分钟数据只返回近 5 个交易日数据且不复权
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol='000300'; 股票代码 |
start_date | str | start_date="1979-09-01 09:32:00"; 日期时间; 默认返回所有数据 |
end_date | str | end_date="2222-01-01 09:32:00"; 日期时间; 默认返回所有数据 |
period | str | period='5'; choice of {'1', '5', '15', '30', '60'}; 其中 1 分钟数据返回近 5 个交易日数据且不复权 |
adjust | str | adjust=''; choice of {'', 'qfq', 'hfq'}; '': 不复权, 'qfq': 前复权, 'hfq': 后复权, 其中 1 分钟数据返回近 5 个交易日数据且不复权 |
输入参数:
1分钟:
名称 | 类型 | 描述 |
---|---|---|
时间 | object | - |
开盘 | float64 | - |
收盘 | float64 | - |
最高 | float64 | - |
最低 | float64 | - |
成交量 | float64 | 注意单位: 手 |
成交额 | float64 | - |
均价 | float64 | - |
其他:
名称 | 类型 | 描述 |
---|---|---|
时间 | object | - |
开盘 | float64 | - |
收盘 | float64 | - |
最高 | float64 | - |
最低 | float64 | - |
涨跌幅 | float64 | 注意单位: % |
涨跌额 | float64 | - |
成交量 | float64 | 注意单位: 手 |
成交额 | float64 | - |
振幅 | float64 | 注意单位: % |
换手率 | float64 | 注意单位: % |
6、日内分时数据-东财
接口:stock_intraday_em
目标:单次返回指定股票最近一个交易日的分时数据, 包含盘前数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="000001"; 股票代码 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
时间 | object | - |
成交价 | float64 | - |
手数 | int64 | - |
买卖盘性质 | object | - |
7、日内分时数据-新浪
接口:stock_intraday_sina
目标:单次返回指定交易日的分时数据;只能获取近期的数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="sz000001"; 带市场标识的股票代码 |
date | str | date="20240321"; 交易日 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | object | - |
name | object | - |
ticktime | object | - |
price | float64 | - |
volume | int64 | 注意单位: 股 |
prev_price | float64 | - |
kind | object | D 表示卖盘,表示 是买盘 |
8、盘前数据
接口:stock_zh_a_hist_pre_min_em
目标:单次返回指定 symbol 的最近一个交易日的股票分钟数据, 包含盘前分钟数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="000001"; 股票代码 |
start_time | str | start_time="09:00:00"; 时间; 默认返回所有数据 |
end_time | str | end_time="15:40:00"; 时间; 默认返回所有数据 |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
时间 | object | - |
开盘 | float64 | - |
收盘 | float64 | - |
最高 | float64 | - |
最低 | float64 | - |
成交量 | float64 | 注意单位: 手 |
成交额 | float64 | - |
最新价 | float64 | - |
更多推荐
所有评论(0)