AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口_akshare访问频率
AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口
大家好我是花姐,今天咱们聊点实在的:如何用 Python 高效获取股票列表、历史价格、估值和财务数据。之前我推荐过 AKShare 和 Tushare,但 AKShare 频繁访问容易被限 IP,Tushare 又需要积分获取行情数据。后来查了好多资料,终于让我发现了一个超级棒的方法,速度贼快,关键是免费!🎉
他就是掘金量化平台API
一、为什么选择掘金量化?
你可能在想,掘金量化到底有啥优势?简单说:
- 速度快:数据响应迅速,几乎没有延迟。
 - 免费:大部分基础数据无需积分、无需充值。
 - 稳定性高:接口稳定,适合长期使用。
 
我本人对数据获取的速度和稳定性要求很高,掘金量化在这方面表现不错。💡
二、环境配置
首先,确保你已经注册了掘金量化账号,并获取了 API Token。然后,安装官方提供的 SDK:
pip install gm -i https://mirrors.aliyun.com/pypi/simple/ -U
小提示: 安装的时候最好用python虚拟环境,支持python3.6 以上的版本
安装完成后,导入并初始化:
from gm.api import *set_token(\'这里填写你的token\')
聪明的你一定会发现,这个初始化过程非常简洁明了。
三、获取股票列表
获取股票列表是量化分析的第一步。使用掘金量化的 get_instruments 方法,可以轻松获取当前所有上市股票的信息:
data = get_instruments( exchanges=\'SZSE,SHSE\', #交易所代码 sec_types=1, #标的类型 df=True) #是否返回Dataframe格式数据

小提示:
- exchanges:交易所代码,SHSE:上海证券交易所,SZSE:深圳证券交易所 , CFFEX:中金所,SHFE:上期所,DCE:大商所, CZCE:郑商所, INE:上海国际能源交易中心 ,GFEX:广期所
 - sec_types 标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 8:可转债, 10: 期货连续合约,只能输入单个品种
 
可以通过print(data.columns)查看有哪些列
Index([\'symbol\', \'sec_level\', \'multiplier\', \'margin_ratio\', \'pre_close\',  \'upper_limit\', \'lower_limit\', \'adj_factor\', \'is_suspended\', \'settle_price\', \'position\', \'pre_settle\', \'strike_price\', \'conversion_price\', \'redemption_record_date\', \'sec_type\', \'exchange\', \'sec_id\', \'sec_name\', \'sec_abbr\', \'price_tick\', \'listed_date\',  \'delisted_date\', \'trade_n\', \'board\', \'quote_unit\', \'option_margin_ratio1\', \'option_margin_ratio2\', \'sec_type_ext\', \'option_type\', \'call_or_put\', \'underlying_symbol\', \'exercise_price\', \'conversion_start_date\', \'trade_date\', \'is_adjusted\'], dtype=\'object\')
通过data[[\'symbol\',\'sec_name\']]就可以获取我们需要的股票代码和股票名称了
四、获取历史价格数据
历史价格数据是策略回测的基础。使用 history 方法,可以获取指定股票的历史行情数据:
for _,row in data.iterrows(): symbol = row.symbol df_hq = history(symbol=symbol,  frequency=\'1d\',  start_time=\'2025-01-01 09:00:00\',  end_time=\'2025-06-01 16:00:00\',  adjust=ADJUST_PREV,  adjust_end_time=\'2025-06-01\',  df=True) df_hq.to_csv(symbol+\".csv\",index=False)
- symbol:标的代码, 如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 [‘symbol1’, ‘symbol2’] 这种列表格式
 - frequency:频率, 支持 ‘tick’, ‘1d’, ‘60s’ 等, 默认 ‘1d’
 - start_time :开始时间 (%Y-%m-%d %H:%M:%S 格式), 也支持 datetime.datetime 格式
 - end_time:结束时间 (%Y-%m-%d %H:%M:%S 格式), 也支持 datetime.datetime 格式
 - adjust:ADJUST_NONE or 0: 不复权, ADJUST_PREV or 1: 前复权, ADJUST_POST or 2: 后复权 默认不复权
 - adjust_end_time :复权基点时间, 默认当前时间
 - df: 是否返回 dataframe 格式, 默认 False, 返回 list[dict]
 
如果大家在做策略研究的时候最好把行情数据下载到本地,这样读取速度快,不占带宽。
五、获取估值数据
估值数据对于选股和策略优化至关重要。使用 stk_get_daily_valuation_pt 方法,可以获取市盈率、市净率等估值指标:
data = stk_get_daily_valuation_pt( symbols=[\'SZSE.000001\', \'SHSE.600000\'], fields=\'pe_ttm,pe_lyr,pe_mrq\', trade_date=None, df=True)print(data)
 symbol trade_date pe_lyr pe_mrq pe_ttm0 SHSE.600000 2025-05-30 7.9968 5.1414 7.96571 SZSE.000001 2025-05-30 5.0403 3.9787 5.1368
如果你需要其它估值指标可以参考下表
六、获取财务数据
财务数据是量化分析的重要依据。使用 stk_get_finance_prime 方法,可以获取利润表、资产负债表、现金流量表等数据:
data = stk_get_finance_prime( symbol=\'SZSE.000001\', fields=\'eps_basic,eps_dil\', rpt_type=None, data_type=None, start_date=None, end_date=None, df=True)print(data)
 symbol pub_date rpt_date rpt_type data_type eps_dil eps_basic0 SZSE.000001 2025-04-19 2025-03-31 1 100 0.62 0.62
有一个需要强调下,symbol只支持单个股票
- rpt_type:按报告期查询可指定以下报表类型:
- 1-一季度报
 - 6-中报
 - 9-前三季报
 - 12-年报
 - 默认None为不限
 
 
fields字段的值可以参考下表
七、总结
通过掘金量化平台的 API,我们可以高效、稳定地获取股票列表、历史价格、估值和财务数据,为量化分析提供坚实的数据基础。聪明的你一定会发现,这个平台在数据获取方面的优势明显,值得深入探索。不过有一个小缺点就是调用的时候需要打开掘金量化的客户端。
如果你对某个具体的策略实现感兴趣,或者在使用过程中遇到问题,欢迎留言讨论。我们一起进步,一起发财!💰


