PTrade API 详解:如何通过 get_stock_info 获取股票上市日期与所属板块信息?
本文将详细介绍 PTrade 量化平台中用于获取股票基础信息的核心函数,包括公司名称、上市时间、行业分类及概念板块等内容。重点解析 get_stock_info 和 get_stock_blocks 等接口的使用方法,并提供可运行的策略示例。
get_stock_info
get_stock_name
get_stock_blocks
如何查询股票的上市日期和所属行业板块?
在 PTrade 平台中,若需程序化获取某只股票的上市日期或其归属的行业与概念板块,需要调用不同的 API 函数来实现。以下是具体操作方式与代码说明:
1. 查询股票上市日期
要获取股票的上市日期,应使用 get_stock_info 接口,并明确指定所需字段为 listed_date。
get_stock_info
接口说明:
get_stock_info(stocks, field=None)
参数说明:
stocks:支持单个股票代码(字符串)或多个代码组成的列表。field:需传入一个字段名列表,其中必须包含 'listed_date' 才能返回上市日期信息。返回值说明:
该接口返回一个嵌套字典结构,键为股票代码,值为对应字段的信息字典。
field
'listed_date'
'listed_date'
2. 获取股票所属的行业与概念板块
使用 get_stock_blocks 可以获取指定股票当前所属的所有分类板块,如行业、概念、地域等。
get_stock_blocks
接口说明:
get_stock_blocks(stock_code)
参数说明:
stock_code:输入目标股票代码(仅支持字符串格式)。
返回值说明:
返回一个字典,Key 表示板块类型,Value 为对应的板块名称列表。常见 Key 包括:
'HY':代表行业分类(例如申万行业)'GN':代表概念板块'DY':表示地域划分'ZJHHY':证监会行业类别'HGT':是否为沪股通标的
'HY'
[['710200.XBHS', '计算机应用']]
完整策略代码示例
以下是一个可在 PTrade 策略编辑器中直接运行的完整代码模板,用于打印指定股票的上市日期与板块信息。
def initialize(context):
# 定义目标股票,如恒生电子
g.security = '600570.SS'
# 设置股票池(建议设置,符合策略规范)
set_universe(g.security)
def before_trading_start(context, data):
# --- 第一步:获取上市日期 ---
info = get_stock_info(g.security, field=['stock_name', 'listed_date'])
if info and g.security in info:
stock_name = info[g.security]['stock_name']
listed_date = info[g.security]['listed_date']
log.info("股票名称: %s, 上市日期: %s" % (stock_name, listed_date))
# --- 第二步:获取行业与概念板块 ---
blocks = get_stock_blocks(g.security)
if blocks:
industry_info = blocks.get('HY', []) # 行业
concept_info = blocks.get('GN', []) # 概念
log.info("所属行业(HY): %s" % str(industry_info))
log.info("所属概念(GN): %s" % str(concept_info))
log.info("全部板块信息: %s" % str(blocks))
def handle_data(context, data):
pass
运行结果说明
执行上述策略后,在日志输出区域会显示如下信息:
上市日期:例如股票名称: 恒生电子, 上市日期: 2003-12-16
行业信息:
get_stock_blocks
注意,get_stock_blocks 返回的板块数据是基于当前市场状态的最新分类。
注意事项
- Python 版本兼容性:PTrade 当前环境通常基于 Python 3,但为了兼容较早版本(如 Python 3.5),推荐使用
%格式化字符串而非 f-string。
%s
get_stock_blocks 获取的是当前时刻的板块归属情况。在历史回测中使用时,它反映的是当前分类而非历史真实分类,属于“未来函数”,不应用于依赖历史时点准确分类的策略逻辑中。get_stock_blocks
listed_date 为字符串类型(如 '2003-12-12'),若需进行日期运算,请手动转换为 datetime.date 对象。listed_date
'2003-12-16'
datetime
常见问题解答(Q&A)
Q:在 get_stock_blocks 返回的字典中,各个 Key 分别代表什么含义?
A:主要 Key 的含义如下:
'HY':行业板块(Industry)'GN':概念板块(Concept)'DY':地域板块(Region)'ZJHHY':证监会行业分类'HGT':是否属于沪股通标的Q: 如何编写代码来筛选上市时间超过 90 天的股票?
A: 可以通过获取个股的上市日期,并与当前回测日期进行对比,计算其上市天数。若差值大于 90 天,则符合条件。参考代码如下:
import datetime
def check_is_old_stock(stock_code, current_dt):
info = get_stock_info(stock_code, field=['listed_date'])
listed_date_str = info[stock_code]['listed_date']
# 将字符串格式的日期转换为 datetime 对象
listed_date = datetime.datetime.strptime(listed_date_str, '%Y-%m-%d')
# 计算与当前日期之间的天数差
days_diff = (current_dt - listed_date).days
return days_diff > 90
get_stock_info
listed_date
Q: 在调用接口时,如果不传入特定参数,返回结果会是什么样?
get_stock_info
A: 若未传入相关参数,则系统默认仅返回包含股票名称(即
stock_name)的基础信息字典,不会包含如上市日期或退市日期等详细字段。因此,在需要查询具体日期信息时,必须显式指定 field=['listed_date'] 参数,否则数据将不完整。
field
field

雷达卡



京公网安备 11010802022788号







