首先分析用户需求:用户需要通达信的涨停函数公式。
在通达信中,涨停的计算通常基于前一交易日的收盘价和当前股票的涨跌幅限制(一般为10%,但ST股票为5%)。
但是,由于不同市场和板块(如科创板、创业板)可能有不同的涨跌幅限制,因此需要考虑这些因素。
然而,通达信软件本身已经提供了涨停价函数:ZTPRICE(REF(CLOSE,1),0.1) 或者对于ST股票是 ZTPRICE(REF(CLOSE,1),0.05)
但是,用户可能想要一个综合的涨停判断公式,能够自动适应不同的股票类型。
注意:通达信没有直接提供判断当前价格是否涨停的函数,所以我们需要自己写条件判断。
我们可以这样设计:
- 首先确定股票的涨跌幅限制。可以通过股票代码的前缀或者板块信息来判断,但通达信没有直接函数返回股票类型。
替代方案:利用股价波动幅度来判断,但这样不准确。 - 另一种常见做法是:假设主板的股票是10%的涨跌幅,而创业板、科创板等为20%,ST/*ST股票为5%。
但是,我们需要根据股票的具体情况来定。
由于无法直接获取股票的类型,我们可以借助市场函数:
比如,如果股票属于创业板(代码以300开头),则涨跌幅为20%;科创板(688开头)为20%;ST或*ST股票为5%;其他为10%。
但是,通达信公式中我们可以用STRFIND函数来查找股票代码的开头。
因此,我们可以这样写:
步骤:
a. 获取当前股票代码(用STKLABEL)
b. 判断是否为科创板(688开头)或创业板(300开头)-> 20%
c. 判断是否为ST或*ST(用STRCMP查找股票名称中是否包含'ST')-> 5%
d. 否则为10%
但是,注意:创业板在2020年8月24日后注册制股票涨跌幅为20%,但之前上市的股票也会同步变为20%。而ST股票无论是哪个板块,都是5%。
所以,我们首先判断是否为ST股票(通过股票名称),然后再判断是否为创业板或科创板。
注意:ST股票即使属于创业板或科创板,其涨跌幅限制也是20%的ST?实际上,ST股票涨跌幅统一为5%。
因此,逻辑为:
如果股票名称中包含'ST'或包含''(表示ST),则涨停幅度为5%;
否则,如果代码以688或300开头,则涨停幅度为20%;
否则,涨停幅度为10%。
然后,计算涨停价:ZTPRICE(REF(CLOSE,1), 幅度)
接着,判断当日是否涨停:
涨停条件:最高价>=涨停价 并且 收盘价>=涨停价(或者用CURRENTPRICE?但盘中用)
但是,通常我们用:CLOSE >= ZTPRICE(REF(CLOSE,1),幅度) 或者 HIGH>=ZTPRICE(REF(CLOSE,1),幅度) 表示当日涨停
但是,用户可能要求的是返回涨停价,也可能要求是涨停信号(布尔值)。这里用户没有明确,但根据题目“涨停函数公式”,可能是要判断涨停信号。
综合以上,我们编写两个版本: