全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版)
97 4
2025-12-04

PTrade API 详解:如何通过 get_stock_info 获取股票上市日期与所属板块信息?

本文将详细介绍 PTrade 量化平台中用于获取股票基础信息的核心函数,包括公司名称、上市时间、行业分类及概念板块等内容。重点解析 get_stock_infoget_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

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
3 小时前
收不收费?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2 小时前
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2 小时前
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

1 小时前
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群