楼主: 我就是想
93 4

[其他] 【PTrade】PTrade API 教程:获取股票基础信息 (get_stock_info) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-12-15
最后登录
2018-12-15

楼主
我就是想 发表于 昨天 19:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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

二维码

扫码加我 拉你入群

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

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

关键词:Trade Stock Info tock stoc

沙发
ahc123 发表于 3 小时前
收不收费?

藤椅
happysteps 发表于 2 小时前
谢谢分享

板凳
是没什么 发表于 2 小时前
谢谢分享

报纸
cre8 发表于 半小时前

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-5 13:19