把通达信三连板公式挂上去之后发现它在图上不亮,先别急着改代码。多数情况是公式算的是「涨停价」,而你看的那几根 K 线里,至少有一根的最高价没有真正碰到涨停价。这两件事看着接近,判据完全不同。
下面按「它算的是什么 → 条件怎么组 → 形态与量能怎么配合 → 什么情况下失效」讲一遍。函数名与语法以通达信金融终端个人版为准,涉及涨跌幅限制比例的部分属于规则设定,会随板块与规则调整变化,本文只讲它在公式里怎么用。
一、连续三天涨停,判的是每天各自成立
通达信三连板公式的思路很直接:对连续三根 K 线各写一条涨停条件,再用逻辑与把它们连起来。关键在于每一条判的是哪一天:
{ 涨停价由前收盘价与比例算出 }
涨停价 := ZTPRICE(REF(CLOSE,1), 0.1);
{ 当日收在涨停价上 }
当日涨停 := CLOSE >= 涨停价;
{ 连续三天各自成立 }
三连 := 当日涨停
AND REF(当日涨停,1)
AND REF(当日涨停,2);
条件: 三连, COLORRED;
写的时候要注意 REF 的方向。它往历史方向取数,REF(当日涨停,1) 取的是上一根那一条条件的成立情况,不是把整个公式往前挪一根。这两者的差别,体现在最左侧那几个位置会不会出现错位的输出。
REF 有没有用错,把 当日涨停 与 三连 一起画到副图上。三连的亮起位置应该出现在连续三根当日涨停的最后一根上,早一根或晚一根都说明取数方向不对。二、用哪个价格判涨停,有三种含义
通达信三连板公式的写法分歧集中在用哪个价格字段参与比较上。同一个条件配不同的价格字段,得到的是三件不同的事:
| 写法 | 含义 | 对应的事实 |
|---|---|---|
C >= ZTPRICE(REF(C,1), 0.1) |
收盘价达到涨停价 | 收盘时停在涨停价上,这一根收在涨停位置 |
H >= ZTPRICE(REF(C,1), 0.1) |
最高价达到涨停价 | 当根 K 线内曾触及涨停价,收盘可能已经打开 |
O = C AND C >= ZTPRICE(REF(C,1), 0.1) |
开盘与收盘都是涨停价 | 全天在涨停价上成交,K 线呈一字形态 |
三条表达式的输出并不互相包含:用最高价判断的那一条,成立的位置比用收盘价判断的多;一字形态是前两条的子集。写公式时先确定自己要的是哪一件事,再选价格字段,不要拿最高价的判断结果当成「收在涨停」来用。
三、比例写成固定值,是失真最集中的地方
通达信三连板公式失真最集中的一处就在这个比例参数上。涨跌幅限制比例由标的所属板块与状态决定,不是一个全市场统一的数。比例写成 0.1 的时候,公式只对比例等于 0.1 的那一类标的是对的;比例不同的那几类,算出来的「涨停价」根本不是涨停价。
{ 分层写法示意:不同档位分开判断 }
比例 := IF(属于第一档, 0.1, IF(属于第二档, 0.2, 0.05));
涨停价 := ZTPRICE(REF(CLOSE,1), 比例);
当日涨停 := CLOSE >= 涨停价;
{ 档位怎么分要照你软件里能取到的属性字段来定,
这里只演示参数的传递方式 }
这个问题没有一劳永逸的写法。可行的做法是分开处理:按标的分类各写一条公式,或者在公式里对比例做分层判断,把不同比例档位的分支写清楚。把比例统一写死再指望它覆盖全部标的,得到的是一份混着正确与错误信号的清单。
四、形态与量能的配合要看哪几处
通达信三连板公式圈出位置之后,接着要看的是这几处形态与量能的对应关系。它们不是判断依据,而是帮助你理解这个位置当时是什么状态:
- K 线形态:一字形态与带实体形态的含义不同。前者全天在涨停价上成交,后者是收盘才停在涨停价上,中间的成交分布差别很大
- 成交量:同一根 K 线上,量能明显放大与明显缩小对应的是两种不同的成交状态
- 开盘位置:开盘就在涨停价与盘中才触及涨停价,两者的过程不一样
这几处放在一起看,目的是描述这个位置当时的样子。至于这个样子的位置后来会怎样,那超出公式能回答的范围。把形态与量能的组合当成判断依据来用,等于让公式替你回答一个它读不到答案的问题。
五、复权口径与停牌边界
通达信三连板公式还要过一道数据口径的关。REF(CLOSE,1) 用的是当前公式的复权口径:在复权价上算,除权除息那一天的前收盘价已经被调整过,ZTPRICE 算出来的值与当日真实的涨停价不是同一个数。要判断真实涨停价,公式要在不复权口径下算。
REF(CLOSE,1) 取到的是停牌前那一根,复牌当天的比较参照就错位了。把公式挂上去之后,先扫一眼有没有停牌段,那一段的输出不要计入观察。新股上市初期也要单独看。上市初期无涨跌幅限制或限制不同,比例假设不成立,这一段会出现与事实不符的判断。把这一段排除掉再评价公式,比直接看全区间可靠。
六、失效场景清单
| 场景 | 公式哪里失效了 | 表现 |
|---|---|---|
| 标的的比例档位与写死的参数不同 | 比例输入错 | 整份清单里混入不成立的信号 |
| 除权除息日 | 前收盘价被复权调整 | 这一天附近的判断偏离事实 |
| 停牌前后 | 停牌期间没有 K 线,参照错位 | 复牌当天的比较基准不对 |
| 新股上市初期 | 比例假设不成立 | 这一段出现与事实不符的判断 |
| 用错了价格字段 | H 与 C 混用 |
把盘中触及当成收盘停住 |
| K 线根数不足 | REF(C,1) 取不到值 |
图上最左侧一段没有输出 |
七、用完之后的检查步骤
- 确认价格字段:要判断的是收盘停在涨停价还是盘中触及,先在纸上写清
- 确认比例档位:参数有没有按标的分类分开写,写死的档位覆盖了哪一类
- 确认复权口径:公式挂载的图表用的是复权还是不复权
- 挑一段含除权与停牌的历史区间:把公式挂上去逐段看,边界处有没有偏离事实的输出
- 查依赖当前根数据的写法:把信号与
ISLASTBAR一起输出,看两者是否同步 - 把结果当清单位置看:表达式输出的是满足条件的位置,条件成立与当时能否成交之间还有价格与时间差
本文讲的是公式语法、条件组合与失效场景,
把上面几项检查做下来,会发现公式本身能控制的只是「判断哪一件事」与「用什么数去判断」。比例档位、复权口径、停牌处理,这些都属于输入端的设定,公式在这里没有自主权,它只能如实反映你喂给它的数。所以核对的重点就落在这一层:输出的位置与事实不一致时,先去检查输入端的每一项,而不是先改判断的写法。
只作技术研究口径,不构成对任何标的的判断。公式输出的位置需要自己在历史行情上逐段核对;参数与条件的取值不同,输出的清单也会不同,这属于公式的设定,不属于行情的结论。
站内还有 量价形态与信号拆解 的其他条目,指标回测与风险验证 里讲信号怎么用历史数据核,选股公式与预警 里讲条件表达式与预警的设置方法,可对照查看。
