前言
在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 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。
只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”

|