🚀 AI 一键生成 joinquant 策略代码

JoinQuant API 指南:如何使用 get_all_securities 动态获取全市场标的列表?

joinquant | 发布时间: 2025/11/28
以下内容由 EasyQuant 生成。

问题描述

怎样获取某个日期的所有上市股票列表?

解决方案

在聚宽(JoinQuant)平台中,获取某个特定日期所有上市股票列表的核心函数是 get_all_securities

以下是具体的实现方法和代码示例:

获取指定日期上市股票列表

1. 核心函数

get_all_securities(types=[], date=None)

参数说明

  • types: 列表类型。传入 ['stock'] 表示仅获取股票信息(不包含基金、期货等)。
  • date: 字符串或 datetime 对象。指定查询的日期(例如 '2023-01-04')。如果不填,默认返回当前平台最新日期的信息。指定该参数后,函数会返回在该日期还在上市(未退市)的所有股票。

2. 代码示例

以下代码展示了如何获取 2023-01-04 当日所有上市股票的代码列表:

# -*- coding: utf-8 -*-
from jqdata import *

def initialize(context):
    # 设定查询日期
    query_date = '2023-01-04'
    
    # 获取该日期所有上市股票的详细信息(返回的是 DataFrame)
    # types=['stock'] 过滤只取股票
    all_stocks_df = get_all_securities(types=['stock'], date=query_date)
    
    # 获取股票代码列表 (DataFrame 的 index 即为股票代码)
    stock_list = list(all_stocks_df.index)
    
    # 打印结果
    print(f"日期 {query_date} 的上市股票数量: {len(stock_list)}")
    print("前5只股票代码:", stock_list[:5])
    
    # 如果需要查看详细信息(如中文名称、上市时间等)
    print("前5行详细信息:")
    print(all_stocks_df.head())

# 模拟运行需要一个空的 handle_data
def handle_data(context, data):
    pass

3. 返回值说明

get_all_securities 返回的是一个 pandas.DataFrame,其索引(Index)是股票代码(如 000001.XSHE),包含以下列:

  • display_name: 中文名称(如“平安银行”)。
  • name: 缩写简称(如“PAYH”)。
  • start_date: 上市日期。
  • end_date: 退市日期(如果没有退市,通常显示为 2200-01-01)。
  • type: 证券类型(此处为 stock)。

Q&A

Q: get_all_securities 获取的列表包含当天停牌的股票吗?
A: 包含。该函数返回的是所有“在册上市”的股票。只要该股票在指定日期未退市,即使当天处于停牌状态,也会包含在列表中。如果需要过滤停牌股票,需要结合 get_priceget_current_data (回测中) 的 paused 属性进行二次筛选。

Q: 如果我不传 date 参数会怎样?
A: 如果不传 date 参数,函数将返回平台数据库中所有曾经上市过的股票信息(包括已经退市的股票)。为了避免获取到已退市的股票干扰策略,建议务必传入具体的 date

Q: 如何同时获取股票和ETF基金列表?
A: 修改 types 参数即可,例如:get_all_securities(types=['stock', 'etf'], date='2023-01-04')