通达信涨停板公式要说的第一件事是它到底在算什么:它把涨停价的计算规则写成一句可以判断成立或不成立的表达式。搞清这一步,后面那些信号失真就都落在同一个地方——涨停价算得对不对,而不是判断符号写得对不对。

下面按”机制 → 写法 → 失真来源 → 自查清单”讲。函数名(ZTPRICE、DTPRICE)与语法以通达信金融终端个人版为准,涨跌幅限制比例属于交易所规则,会随板块与规则调整变化,本文只讲它在公式里怎么用,不涉及对具体标的的判断。

一、涨停价是一个计算结果,不是一个标记

行情数据里没有”这个价格是不是涨停价”这样的字段,只有成交价。公式要判断涨停,得自己把涨停价算出来。通达信提供了现成的函数:

ZTPRICE(REF(CLOSE,1), 比例)   ← 返回涨停价
DTPRICE(REF(CLOSE,1), 比例)   ← 返回跌停价

{ 参考写法:收盘价达到涨停价 }
涨停 := C >= ZTPRICE(REF(C,1), 0.1);

这两个函数做的是同一件事:拿前一个周期的收盘价,乘上 1 + 比例,再按交易所的取整规则处理到分位。所以公式判断的准确性,取决于两个输入对不对——前收盘价对不对、比例对不对。后面所有的失真场景,都能归到这两个输入上。

这也解释了为什么不要手写 C >= REF(C,1) * 1.1。手写乘法少了取整这一步,成交价与理论值差一分钱的时候,条件就不成立。用 ZTPRICE 让软件自己处理取整,能直接消掉这一类误差。

二、三种写法,含义各不相同

通达信涨停板公式的写法分歧,集中在用哪个价格参与比较上。同一个条件配不同的价格字段,得到的是三件不同的事,这一点在动手写之前要先想清。

写法 含义 对应的事实
C >= ZTPRICE(REF(C,1), 0.1) 收盘价达到涨停价 收盘时封在涨停价上,这一根 K 线收在涨停位置
H >= ZTPRICE(REF(C,1), 0.1) 最高价达到涨停价 当根 K 线内曾触及涨停价,收盘可能已经打开
O = C AND C >= ZTPRICE(REF(C,1), 0.1) 开盘与收盘都是涨停价 全天在涨停价上成交,K 线呈一字形态

三条表达式的输出并不互相包含:用最高价判断的那一条,成立的位置比用收盘价判断的多;一字形态是前两条的子集。写公式时先确定自己要的是哪一件事,再选价格字段,不要拿 H 的判断结果当成”收在涨停”来用。

三、比例参数写死,是失真最集中的地方

通达信涨停板公式失真最集中的一处就在这个比例参数上。涨跌幅限制比例由标的所属板块与状态决定,不是一个全市场统一的数。比例写成 0.1 的时候,公式只对比例等于 0.1 的那一类标的是对的;比例不同的那几类,算出来的”涨停价”根本不是涨停价。

这个问题没有一劳永逸的写法。可行的做法是分开处理:按标的分类各写一条公式,或者在公式里对比例做分层判断,把不同比例档位的分支写清楚。把比例统一写死再指望它覆盖全部标的,得到的是一份混着正确与错误信号的清单。

{ 分层写法示意:不同档位分开判断 }

比例 := IF(属于第一档, 0.1, IF(属于第二档, 0.2, 0.05));

涨停 := C >= ZTPRICE(REF(C,1), 比例);

← 档位怎么分要照你软件里能取到的属性字段来定,
  这里只演示参数的传递方式
还有一种同类问题出在复权上。REF(C,1) 用的是当前公式的复权口径:在复权价上算,除权除息那一天的前收盘价已经被调整过,ZTPRICE 算出来的值与当日真实的涨停价不是同一个数。要判断真实涨停,公式要在不复权口径下算。

四、误判场景清单

下面这些场景都会让通达信涨停板公式的输出与事实不一致。它们的共同点是公式没有写错,是它的前提在特定条件下不成立。

场景 公式哪里失效了 表现
标的的比例档位与写死的参数不同 比例输入错 整份清单里混入不成立的信号
除权除息日 前收盘价被复权调整 这一天附近的判断偏离事实
停牌前后 停牌期间没有 K 线,REF(C,1) 取到的是停牌前那一根 复牌当天的比较参照错位
新股上市初期 上市初期无涨跌幅限制或限制不同,比例假设不成立 这一段出现与事实不符的判断
用错了价格字段 H 与 C 混用 把”盘中触及”当成”收盘封住”
K 线根数不足 REF(C,1) 取不到值 图上最左侧一段没有输出

复权口径怎么切:图表上的复权方式决定了公式读到的价格。把图表切到不复权,同一个公式的输出会跟着变——这不是公式的问题,是它读到的数变了。要判断真实的涨停价,公式要在不复权口径下运行;要在长周期上看价格的连续性,复权口径更合适,但这时候它判断的已经不是当日真实的涨停价。两种口径各有用途,先明确这一次要的是哪一个,再选图表的复权设置。

五、未来函数:让历史看起来很顺的那种写法

有一类函数在计算当前这一根 K 线时,会读到它之后的数据。用了这类函数,公式在历史区间上回看的方向上会表现得很顺,但在当时那一刻算不出同样的结果。判断方法是在公式里加一条提示当前 K 线位置的输出,看信号是否只在特定位置出现:

{ 判断当前是不是最后一根 K 线 }
是最后一根 := ISLASTBAR;

{ 把信号与这个判断一起输出,看两者是否同步 }
信号: 涨停, COLORRED;
末端: 是最后一根, COLORGRAY;

← 信号只在末端这一根才出现,说明公式依赖了
  只有在数据结束时才知道的信息

另一条相关的检查是往回取数据的写法。公式结尾用 REF 或多根 K 线的极值去做比较,本身不算未来函数;只有在取数的方向上越过了当前 K 线,才会读到之后的数据。检查的方向是:把它挂在副图上,往历史区间拉远一点,看信号会不会随着区间变长而改变位置。

六、上线前的自查清单

  1. 确认用的是哪个价格字段:C、H、O 三选一,先在纸上写清要判断的是”收盘封住”还是”盘中触及”
  2. 确认比例档位:参数有没有按标的分类分开写,写死的档位覆盖了哪一类
  3. 确认复权口径:公式挂载的图表用的是复权还是不复权,判断真实涨停要在不复权下算
  4. 挑一段含除权与停牌的历史区间:把公式挂上去逐段看,边界处有没有偏离事实的输出
  5. 查未来函数:把信号与 ISLASTBAR 一起输出,看两者是否同步出现
  6. 把结果当清单位置看,不当结论看:表达式输出的是满足条件的位置,条件成立与当时能否成交之间还有价格与时间差

本文讲的是公式语法、参数取值与失真场景,只作技术研究口径,不构成对任何标的的判断。公式输出的位置需要自己在历史行情上逐段核对;参数与条件的取值不同,输出的清单也会不同,这属于公式的设定,不属于行情的结论。

站内还有 量价形态与信号拆解 的其他条目,指标回测与风险验证 里讲信号验证的口径,选股公式与预警 里讲条件表达式与预警的设置方法,可对照查看。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。