一、 AKShare 简介
定位:AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。
akshare官网:Welcome to AKShare's Online Documentation! — AKShare 1.16.62 文档
特点:数据源丰富、接口简洁、支持主流数据格式(如 Pandas DataFrame)。
适用场景:量化交易、数据分析、学术研究等。
二、安装与配置
安装 AKShare
pip install akshare --upgrade
依赖库安装
AKShare 依赖 pandas, requests 等库,若未自动安装,可手动安装。
三、历史行情数据接口整理
接上一篇,对上篇的部分接口进行整理对比。
1、历史行情数据接口对比
接口 | 东方财富 | 新浪财经 | 腾讯财经 |
---|---|---|---|
接口名 | stock_zh_a_hist | stock_zh_a_daily | stock_zh_a_hist_tx |
市场标识 | 无需(如 '000001' ) | 需(如 'sh600000' ) | 需(如 'sz000001' ) |
复权类型 | '' (不复权)、'qfq' 、'hfq' | 支持因子类型('qfq-factor' 等) | '' 、'qfq' 、'hfq' |
推荐场景 | 日 / 周 / 月频数据首选,更新及时 | 补充数据或复权因子需求 | 简单场景 |
注意事项 | 无 IP 限制 | 易触发限制,建议低频调用,可切换为 stock_zh_a_hist 接口使用(该接口数据质量高, 访问无限制) | - |
2、分时数据接口对比
接口 | 新浪分时 | 东财分时 |
---|---|---|
接口名 | stock_zh_a_minute | stock_zh_a_hist_min_em |
周期 | 1, 5, 15, 30, 60 分钟 | 同上 |
时间范围 | 无明确限制 | 只能获取近期的分时数据,1 分钟周期仅保留近 5 个交易日 |
推荐场景 | 实时或短期分时分析 | 长期分钟数据需求(需注意时间限制) |
四、A股-历史分笔数据-腾讯财经
接口: stock_zh_a_tick_tx
描述: 每个交易日 16:00 提供当日数据; 如遇到数据缺失, 请使用 ak.stock_zh_a_tick_163() 接口(注意数据会有一定差异)
限量: 单次返回最近交易日的历史分笔行情数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="sh600000" |
输出参数:
名称 | 类型 | 描述 |
---|---|---|
成交时间 | object | - |
成交价格 | float64 | 注意单位: 元 |
价格变动 | float64 | 注意单位: 元 |
成交量 | int32 | 注意单位: 手 |
成交额 | int32 | 注意单位: 元 |
性质 | object | 买卖盘标记 |
五、运行示例
#历史行情数据
import akshare as ak
#东财
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20170301", end_date='20240528', adjust="")
#“”:不复权; qfq:前复权; hfq: 后复权
#新浪
stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol="sz000001", start_date="19910403", end_date="20231027", adjust="qfq")
#“”:不复权; qfq:前复权; hfq: 后复权; hfq-factor: 后复权因子; qfq-factor: 前复权因子
#腾讯
stock_zh_a_hist_tx_df = ak.stock_zh_a_hist_tx(symbol="sz000001", start_date="20200101", end_date="20231027", adjust="")
#“”:不复权; qfq:前复权; hfq: 后复权
#分时数据
import akshare as ak
#新浪
stock_zh_a_minute_df = ak.stock_zh_a_minute(symbol='sh600751', period='1', adjust="qfq")
#东财
# 注意:该接口返回的数据只有最近一个交易日的有开盘价,其他日期开盘价为 0
stock_zh_a_hist_min_em_df = ak.stock_zh_a_hist_min_em(symbol="000001", start_date="2024-03-20 09:30:00", end_date="2024-03-20 15:00:00", period="1", adjust="")
#日内分时数据-东财
import akshare as ak
stock_intraday_em_df = ak.stock_intraday_em(symbol="000001")
print(stock_intraday_em_df)
#盘前数据
import akshare as ak
stock_zh_a_hist_pre_min_em_df = ak.stock_zh_a_hist_pre_min_em(symbol="000001", start_time="09:00:00", end_time="15:40:00")
print(stock_zh_a_hist_pre_min_em_df)
#历史分笔数据-腾讯财经
import akshare as ak
stock_zh_a_tick_tx_js_df = ak.stock_zh_a_tick_tx_js(symbol="sz000001")
print(stock_zh_a_tick_tx_js_df)