> 技术文档 > AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口_akshare访问频率

AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口_akshare访问频率


AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口

大家好我是花姐,今天咱们聊点实在的:如何用 Python 高效获取股票列表、历史价格、估值和财务数据。之前我推荐过 AKShare 和 Tushare,但 AKShare 频繁访问容易被限 IP,Tushare 又需要积分获取行情数据。后来查了好多资料,终于让我发现了一个超级棒的方法,速度贼快,关键是免费!🎉
AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口_akshare访问频率

他就是掘金量化平台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格式数据

AKShare被限IP、Tushare要积分?这才是最适合量化用的数据接口_akshare访问频率

小提示:

  • 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

如果你需要其它估值指标可以参考下表

字段名 类型 中文名称 单位 pe_ttm float 市盈率(TTM) 倍 pe_lyr float 市盈率(最新年报LYR) 倍 pe_mrq float 市盈率(最新报告期MRQ) 倍 pe_1q float 市盈率(当年一季×4) 倍 pe_2q float 市盈率(当年中报×2) 倍 pe_3q float 市盈率(当年三季×4/3) 倍 pe_ttm_cut float 市盈率(TTM) 扣除非经常性损益 倍 pe_lyr_cut float 市盈率(最新年报LYR) 扣除非经常性损益 倍 pe_mrq_cut float 市盈率(最新报告期MRQ) 扣除非经常性损益 倍 pe_1q_cut float 市盈率(当年一季×4) 扣除非经常性损益 倍 pe_2q_cut float 市盈率(当年中报×2) 扣除非经常性损益 倍 pe_3q_cut float 市盈率(当年三季×4/3) 扣除非经常性损益 倍 pb_lyr float 市净率(最新年报LYR) 倍 pb_mrq float 市净率(最新报告期MRQ) 倍 pb_lyr_1 float 市净率(剔除其他权益工具,LYR) 倍 pb_mrq_1 float 市净率(剔除其他权益工具,MRQ) 倍 pcf_ttm_oper float 市现率(经营现金流,TTM) 倍 pcf_ttm_ncf float 市现率(现金净流量,TTM) 倍 pcf_lyr_oper float 市现率(经营现金流,最新年报LYR) 倍 pcf_lyr_ncf float 市现率(现金净流量,最新年报LYR) 倍 ps_ttm float 市销率(TTM) 倍 ps_lyr float 市销率(最新年报LYR) 倍 ps_mrq float 市销率(最新报告期MRQ) 倍 ps_1q float 市销率(当年一季×4) 倍 ps_2q float 市销率(当年中报×2) 倍 ps_3q float 市销率(当年三季×4/3) 倍 peg_lyr float 历史PEG值(当年年报增长率) peg_mrq float 历史PEG值(最新报告期增长率) peg_1q float 历史PEG值(当年1季×4较上年增长率) peg_2q float 历史PEG值(当年中报×2较上年增长率) peg_3q float 历史PEG值(当年3季×4/3较上年增长率) peg_np_cgr float 历史PEG值(PE_TTM较净利润3年复合增长率) peg_npp_cgr float 历史PEG值(PE_TTM较净利润3年复合增长率) dy_ttm float 股息率(TTM) % dy_lfy float 股息率(上一财年LFY) %

六、获取财务数据

财务数据是量化分析的重要依据。使用 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字段的值可以参考下表

字段名 类型 中文名称 单位 eps_basic float 基本每股收益 元 eps_dil float 稀释每股收益 元 eps_basic_cut float 扣除非经常性损益后的基本每股收益 元 eps_dil_cut float 扣除非经常性损益后的稀释每股收益 元 net_cf_oper_ps float 每股经营活动产生的现金流量净额 元 bps_pcom_ps float 归属于母公司股东的每股净资产 元 ttl_ast float 总资产 元 ttl_liab float 总负债 元 share_cptl float 股本 股 ttl_inc_oper float 营业总收入 元 inc_oper float 营业收入 元 oper_prof float 营业利润 元 ttl_prof float 利润总额 元 ttl_eqy_pcom float 归属于母公司股东的所有者权益 元 net_prof_pcom float 归属于母公司股东的净利润 元 net_prof_pcom_cut float 扣除非经常性损益后归属于母公司股东的净利润 元 roe float 全面摊薄净资产收益率 % roe_weight_avg float 加权平均净资产收益率 % roe_cut float 扣除非经常性损益后的全面摊薄净资产收益率 % roe_weight_avg_cut float 扣除非经常性损益后的加权平均净资产收益率 % net_cf_oper float 经营活动产生的现金流量净额 元 eps_yoy float 每股收益同比比例 % inc_oper_yoy float 营业收入同比比例 % ttl_inc_oper_yoy float 营业总收入同比比例 % net_prof_pcom_yoy float 归母净利润同比比例 % bps_sh float 归属于普通股东的每股净资产 元 net_asset float 归属于普通股东的净资产 元 net_prof float 归属于普通股东的净利润 元 net_prof_cut float 扣除非经常性损益后归属于普通股东的净利润 元

七、总结

通过掘金量化平台的 API,我们可以高效、稳定地获取股票列表、历史价格、估值和财务数据,为量化分析提供坚实的数据基础。聪明的你一定会发现,这个平台在数据获取方面的优势明显,值得深入探索。不过有一个小缺点就是调用的时候需要打开掘金量化的客户端。

如果你对某个具体的策略实现感兴趣,或者在使用过程中遇到问题,欢迎留言讨论。我们一起进步,一起发财!💰

平面设计问答解答