返回列表 发布新帖

场景_判断股票在历史的某一天是否处于ST或PT状态

2392 2
发表于 2024-4-24 19:13:52 | 显示全部楼层 阅读模式

前言

在A股市场中,ST股与PT股属于比较常见的特定标识。如果哪只股票的名字加上ST或者PT(被称为戴帽),就是给股民一个警告。它们具体代表什么意思呢?

ST股(Special treatment)即“特别处理”股:指财务状况或其它状况出现异常的上市公司股票。 这项规定自1998年4月22日开始实行的,刚开始实行的那几年很多股民喜欢炒这种ST股,风险大收益也大。

PT(Particular Transfer)股即“特别转让”股:为暂停上市股票提供流通渠道的“特别转让服务”。 依据《公司法》和《证券法》规定,上市公司出现连续三年亏损等情况,其股票将暂停上市。沪深交易所从1999年7月9日起,对这类暂停上市的股票实施特别转让服务,并在其简称前冠以PT,称之为PT股票。

了解一个股票在历史上特定时间点是否处于ST或PT状态是至关重要的,因为与公司的财务健康状况和未来的股价表现密切相关。因此,部分投资者在进行选股时,会进行风险过滤,剔除ST、PT股。那么如何快速判断股票是否处在ST或PT状态呢?

解答

情况1:内置Python

# coding:gbk

def after_init(C):
    stock_code = "000004.SZ"


def handlebar(C):
    stock_code = "000004.SZ"
    timetag = timetag_to_datetime(C.get_bar_timetag(C.barpos), "%Y%m%d")
    status = check_date_status(stock_code,timetag)
    if status:
        print(f"{stock_code} - 日期:{timetag} -- 状态:{status}")

def check_date_status(stock_code,date_str):
    """
    ToDo:
        检查给定日期是否在ST或*ST的日期范围内
    Args:
        stock_code: 股票代码
        date_str: 要检查的日期,格式为"YYYYMMDD"
    Return: 
        找到的状态('ST'或'*ST'),如果未找到,返回None
    """
    data = get_st_status(stock_code)
    # 遍历字典中的每个状态和对应的日期范围列表
    for status, ranges in data.items():
        for start_date, end_date in ranges:
            # 检查给定的日期是否在当前的日期范围内
            if start_date <= date_str <= end_date:
                return status  # 返回找到的状态
    return None  # 如果未找到,返回None  

情况2:原生Python

from xtquant import xtdata

xtdata.download_his_st_data() # 下载历史ST数据

def check_date_status(stock_code,date_str):
    """
    ToDo:
        检查给定日期是否在ST或*ST的日期范围内
    Args:
        stock_code: 股票代码
        date_str: 要检查的日期,格式为"YYYYMMDD"
    Return: 
        找到的状态('ST'或'*ST'),如果未找到,返回None
    """
    data = xtdata.get_his_st_data(stock_code)
    # 遍历字典中的每个状态和对应的日期范围列表
    for status, ranges in data.items():
        for start_date, end_date in ranges:
            # 检查给定的日期是否在当前的日期范围内
            if start_date <= date_str <= end_date:
                return status  # 返回找到的状态
    return None  # 如果未找到,返回None  
if __name__ == "__main__":
    check_date_status("000004.SZ","20110228")

不清楚的内容可添加下方助理微信咨询,有其他 QMT 小技巧想学习的吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!

欢迎和我一起加入迅投组建的 QMT 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。

只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”

企业微信截图_17235220909173.png

评论2

心如止水
发表于 2024-4-25 10:43:35 | 显示全部楼层
还有其他想学习的 QMT 小技巧吗?欢迎大家在下方留言,版主将根据大家的留言持续更新哦!没有进群的伙伴们记得添加迅投官方小助理:xuntouqmt,微信群实时交流
*******7394
发表于 2024-4-25 16:41:08 | 显示全部楼层
ContextInfo.get_his_st_data(stockcode)跟get_st_status(stock_code) 好像没什么区别,感觉一样?大QMT里面为什么提供两个

回复

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

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表