问题描述
解决方案
在 JoinQuant 聚宽平台上,查询一只股票的上市日期等基本信息,主要使用 get_security_info 函数。如果您需要查询全市场所有标的的信息,可以使用 get_all_securities 函数。
以下是具体的代码示例和说明:
1. 查询单只股票信息 (get_security_info)
该函数用于获取单个标的(股票、基金、指数等)的详细信息对象。
代码示例:
# -*- coding: utf-8 -*-
from jqdata import *
# 以平安银行(000001.XSHE)为例
code = '000001.XSHE'
# 获取标的信息对象
info = get_security_info(code)
# 打印各项基本信息
print("代码: %s" % code)
print("中文名称: %s" % info.display_name)
print("缩写简称: %s" % info.name)
print("上市日期: %s" % info.start_date)
print("退市日期: %s" % info.end_date) # 如果未退市,通常显示为 2200-01-01
print("类型: %s" % info.type) # stock(股票), fund(基金), index(指数) 等
返回值说明:
返回的是一个对象,包含以下属性:
display_name: 中文名称name: 缩写简称(拼音首字母)start_date: 上市日期 (datetime.date类型)end_date: 退市日期 (datetime.date类型)type: 标的类型(如 'stock')parent: 分级基金的母基金代码
2. 查询所有或多只股票信息 (get_all_securities)
如果您需要以列表形式查看大量股票的上市日期,使用 get_all_securities 会更高效,它返回一个 pandas.DataFrame。
代码示例:
# -*- coding: utf-8 -*-
from jqdata import *
# 获取当前市场上所有股票的信息
# date参数可选,指定日期表示获取该日期还在上市的股票,不填则获取所有历史股票
df = get_all_securities(types=['stock'], date='2023-01-01')
# 打印前5行查看
print(df.head())
# 如果想查看特定几只股票的信息,可以通过索引筛选
codes = ['000001.XSHE', '600519.XSHG']
print(df.loc[codes, ['display_name', 'start_date']])
返回值说明:
返回 pandas.DataFrame,包含以下列:
display_name: 中文名称name: 缩写简称start_date: 上市日期end_date: 退市日期type: 类型
Q&A
Q: get_security_info 只能查询股票吗?
A: 不止。它还可以查询基金(fund)、指数(index)、期货(futures)、ETF 等标的的信息。
Q: 如果查询的股票代码不存在会发生什么?
A: 如果传入错误的代码,get_security_info 通常会返回 None。在使用返回对象属性前(如 .start_date),建议先判断对象是否为 None。
Q: start_date 返回的数据类型是什么?
A: 返回的是 Python 的 datetime.date 对象(例如 datetime.date(1991, 4, 3)),而不是字符串。如果需要字符串格式,可以使用 str(info.start_date) 转换。