股票日线数据下载到底该怎么弄?手把手教你从零获取历史行情
摘要:
股票日线数据下载是量化交易和行情复盘的第一步。免费渠道有Tushare、AkShare、Yahoo Finance,付费渠道有Wind、聚宽。下载前需确认复权方式、时间范围、字段完整性,避免数据偏差影响策略。

为什么你需要自己下载股票日线数据
做股票复盘、写量化策略、回测交易信号,都绕不开一个东西:历史日线数据。很多人一上来就跑去问“哪个软件能看到K线”,看和用是两码事。看盘软件里的数据你导不出来,或者导出来缺胳膊少腿。自己下载日线数据,核心目的是把开盘价、最高价、最低价、收盘价、成交量、成交额这些字段拿到手,存成CSV或者数据库,随时调用。
市面上数据源分三类:免费开源接口、券商自带导出、付费专业终端。免费的开源库适合散户和初学者,付费的适合机构。今天重点讲免费且能用的股票日线数据下载方法。
免费下载股票日线数据的几个主流渠道
AkShare:最省事的Python库
AkShare是一个开源金融数据接口库,安装一行命令:pip install akshare。下载单只股票日线数据,用stock_zh_a_hist函数。代码演示如下:

import akshare as ak
# 下载平安银行日线数据,前复权
df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20200101", end_date="20241231", adjust="qfq")
print(df.head())
df.to_csv("pingan_daily.csv", index=False)
这段代码会把平安银行从2020年初到2024年底的日线数据拉下来,字段包括日期、开盘、收盘、最高、最低、成交量、成交额、振幅、涨跌幅、换手率。adjust参数控制复权方式:qfq前复权,hfq后复权,空字符串不复权。
AkShare的优点是免费、字段全、更新及时。缺点是依赖上游网站结构,偶尔接口会失效,需要更新库版本。
Tushare:老牌数据社区
Tushare需要注册获取token,有积分门槛。基础日线数据对积分要求不高,普通用户做股票日线数据下载够用。调用方式类似:
import tushare as ts
ts.set_token('你的token')
pro = ts.pro_api()
df = pro.daily(ts_code='000001.SZ', start_date='20200101', end_date='20241231')
Tushare返回的字段是英文列名,需要自己映射成中文。它的优势是数据质量稳定,适合做严肃回测。
Yahoo Finance:美股和港股日线数据
做美股或者港股,yfinance库最方便。pip install yfinance,然后:
import yfinance as yf
df = yf.download("AAPL", start="2020-01-01", end="2024-12-31", interval="1d")
df.to_csv("aapl_daily.csv")
A股数据用yfinance也能拿到,代码是600519.SS这种格式,但数据完整性和复权处理不如AkShare。
下载日线数据必须搞清楚的几个坑
复权方式选错,回测全白费
股票日线数据下载时,复权是最容易被忽略的细节。不复权的数据在除权除息日会出现价格跳空,比如某股票10送10,价格从20块变成10块,K线图上直接腰斩。你用这种数据跑均线策略,系统会误判为暴跌信号。
前复权是以最新价格为基准,把历史价格调整过来。后复权是以上市首日为基准,把后续价格调整上去。做短线回测用前复权,做长期持有收益计算用后复权。
停牌日和缺失值怎么处理
A股停牌期间没有日线数据,下载下来就是缺失的日期。回测框架里需要自己补全交易日历,把停牌日标记出来,否则策略会在不该交易的日子发信号。
数据字段够不够用
只下载开高低收四个价格,做不了精细回测。成交量、成交额用来判断流动性,换手率用来过滤小盘股,涨跌幅用来计算动量因子。AkShare默认返回的字段比较全,Tushare需要自己拼接口。
期货日线数据下载有什么不同
期货和股票在数据下载上有三个核心差异。
期货有主力合约和连续合约之分。股票只有一个代码,期货每个品种同时有多个合约月份。做趋势策略要用主力连续合约,AkShare里用futures_main_sina接口。
期货有夜盘交易。日线数据的时间戳归属不同交易所规则不一样,上期所夜盘算下一个交易日,大商所和郑商所也各有规定。下载数据时要注意日期对齐。
期货没有复权概念,但有换月跳空。主力合约切换时价格会跳空,需要做后向复权处理,把换月缺口抹平。
import akshare as ak
# 下载螺纹钢主力连续日线
df = ak.futures_main_sina(symbol="RB0", start_date="20200101", end_date="20241231")
df.to_csv("rb_main.csv", index=False)
下载完之后数据怎么存
小规模数据存CSV够用,几千只股票几千个交易日,文件多了之后CSV管理起来很痛苦。建议用SQLite或者DuckDB存本地数据库,查询速度快,支持SQL过滤。
按股票代码分表,或者按年份分表。每天增量更新,不要每次全量下载。AkShare支持按日期范围拉取,维护一个最后更新日期的记录,下次只拉新增部分。
数据质量检查不能省。下载完随机抽几只股票,对照行情软件看看收盘价和成交量是否一致。复权因子有没有正确应用,除权日前后价格是否连续。
付费渠道值不值得用
Wind、Choice、聚宽这些付费终端,数据质量和稳定性确实好,但一年几万到几十万的费用对散户不友好。做量化私募或者机构研究,付费买的是时间和确定性。个人投资者用AkShare加Tushare组合,覆盖A股、港股、美股的日线数据下载需求,成本为零。
关键不是数据源多高级,而是你清不清楚自己要什么字段、什么复权方式、什么时间粒度。搞明白这些,免费数据一样能跑出靠谱的策略。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: