🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

在JoinQuant聚宽平台上如何获取A股所有股票代码列表?

joinquant | 发布时间: 2026/6/2
以下内容由 EasyQuant 生成。

问题描述

如何获取A股的所有股票代码列表?

我想获取A股的代码列表,调用get_index_stocks('000002.XSHG'),发现只有1439个股票代码,而通达信有3000多个啊.何解?

解决方案

为什么 get_index_stocks('000002.XSHG') 获取的股票数量不够?

您调用的 get_index_stocks('000002.XSHG') 获取的是上证A股指数的成分股。顾名思义,它只包含了在上海证券交易所上市的A股股票(代码以600、601、603等开头)。

而中国A股市场除了上海证券交易所,还有深圳证券交易所(包含深市主板、中小板、创业板,代码以000、002、300等开头)以及科创板等。因此,仅获取上证A股指数的成分股,自然会漏掉深市和科创板的几千只股票。


如何正确获取全市场A股的所有股票代码?

在 JoinQuant(聚宽)平台上,获取全市场所有股票信息的正确且最直接的方法是使用 get_all_securities API。

接口说明

get_all_securities(types=['stock'], date=None)

  • types: 传入 ['stock'] 表示只获取股票类型的数据,过滤掉基金、指数、期货等。
  • date: 可以指定日期,获取该日期还在上市的股票。如果不传,默认获取所有日期的股票信息(建议指定日期,如 context.current_dt 或具体日期字符串,以避免获取到未来才上市的股票)。

该函数返回一个 pandas.DataFrame,其行索引(index)就是股票代码。

Python 代码示例

# 导入聚宽数据接口
from jqdata import *

def initialize(context):
    # 获取当前日期下,所有上市的A股股票信息(DataFrame格式)
    all_stocks_df = get_all_securities(types=['stock'], date=context.current_dt)
    
    # 提取 DataFrame 的 index,并转换为 list,这就是所有股票代码的列表
    all_stocks_list = list(all_stocks_df.index)
    
    # 打印查看股票总数
    log.info("当前全市场A股股票总数为: %d 只" % len(all_stocks_list))
    
    # 打印前10个股票代码看看
    log.info("前10只股票代码: %s" % all_stocks_list[:10])

总结

  • 错误做法:使用特定指数(如上证A股指数)获取全市场股票,会导致深市等其他板块股票缺失。
  • 正确做法:使用 get_all_securities(['stock']) 接口,提取其返回的 DataFrame 的 index 即可获得完整的A股代码列表。