K 线上明明留着一个没补的口子,把通达信缺口显示公式挂上去,图上却什么都没有;或者标出来了,位置比实际缺口偏了半个身位。这两种情况都不是公式「写错了」,而是判据与标注这两段混在一起算。通达信缺口显示公式要做的事只有一件:先算准缺口的上沿与下沿落在哪两个价位,再决定用什么动作把它们画出来。这两步分开写,出问题就能分开查。
下面按「判据 → 取价 → 标注 → 回补 → 伪缺口 → 验证」走一遍。文中函数名与菜单项按通达信 PC 版常见形态描述,不同版本与券商定制版在函数支持范围与显示细节上有差异,具体以本机公式管理器的测试结果为准。
一、判据与标注是两件事
缺口在日线上的定义没有歧义。当天最低价高于前一天最高价,是一个向上跳空的口子;当天最高价低于前一天最低价,是一个向下跳空的口子。中间那段没有成交的价格区间,就是缺口。
{ 缺口的两个判据,先只算不画 }
QS:=LOW>REF(HIGH,1); { 向上跳空:今天最低 高于 昨天最高 }
QX:=HIGH<REF(LOW,1); { 向下跳空:今天最高 低于 昨天最低 }
{ 缺口的上下沿,取的是缺口当天与前一天的那两个价位 }
QSH:=REF(HIGH,1); { 向上缺口的下沿 = 昨天最高 }
QSL:=LOW; { 向上缺口的上沿 = 今天最低 }
QXH:=HIGH; { 向下缺口的上沿 = 今天最高 }
QXL:=REF(LOW,1); { 向下缺口的下沿 = 昨天最低 }
判据这一段的结果只有真假,图上什么都不会出现——它没有输出语句。这一点常被判成「公式没生效」,其实是把条件写完了但没有画。判断方法是在公式管理器里点「测试公式」,输出区里如果只有几个中间量的值、没有画线动作,说明公式停在了计算层。
标注那一段才是决定图上长什么样的。写法有线段、色柱、文字三类,各自解决的问题不同,后面第三节分开讲。这里先记一句:判据错了,标注越花越难看懂;判据对了,标注只是一层皮。
二、上下沿取哪个价,决定标出来的位置准不准
通达信缺口显示公式里最容易偏的地方,不是条件写错,是取价取错。同一段缺口,用收盘价去连和用最高最低价去连,画出来的带子宽度不一样,位置也会整体挪动。
| 取价方式 | 画出来的样子 | 适用与代价 |
|---|---|---|
| REF(HIGH,1) 与 LOW(向上缺口) | 带子正好覆盖没有成交的那段区间 | 与缺口的定义一致,标注位置最贴实际 |
| REF(CLOSE,1) 与 CLOSE | 带子偏窄,除当天单边大幅开盘外会短一截 | 写法短,但覆盖不到缺口的上沿 |
| REF(HIGH,1)±固定点数 | 带宽固定,行情波动大的时候显得突兀 | 只适合做视觉提示,不对应真实区间 |
第一行是推荐写法,理由是它跟判据共用同一对价位:判据比较的是 LOW 与 REF(HIGH,1),标注也用这两个值,条件成立与画出来的位置天然对齐。换成收盘价以后,判据与标注就用了两套数,条件成立的那些根里,会有一部分带子落不到口子上。
取价还牵出一个方向问题。向上缺口的区间是「昨天最高 → 今天最低」,所以画柱的时候起始价写 REF(HIGH,1)、结束价写 LOW;向下缺口反过来,起始价写 HIGH、结束价写 REF(LOW,1)。顺序写反,STICKLINE 画出来是一条宽度为负的带子,部分版本表现为不渲染,也有版本会画到坐标轴外面去。
三、三种标注写法:线段、色柱、文字
通达信缺口显示公式的标注动作有三类可用的函数,各自的分工很清楚。
色柱标区间。STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY) 在两根价位之间画一根柱,第四个参数是宽度,第五个参数非零时画空心柱。这是标缺口最直接的方式,因为它天然接受「上下两个价」这两个参数。
{ 用色柱标出缺口区间 }
STICKLINE(QS,QSH,LOW,8,0),COLORRED;
STICKLINE(QX,HIGH,QXL,8,0),COLORGREEN;
宽度写 8 是一个折中值:写太宽,相邻两根 K 的柱会连成一片,看不出是几个缺口;写太窄,缩图以后就看不见了。这个参数按你常用周期的 K 线密度调,没有通用值。
文字标方位。DRAWTEXT(COND,PRICE,TEXT) 的第二个参数是纵坐标。写 LOW 会把字压在 K 线下沿,写 LOW*0.98 则会随价格浮动,缩图时容易跑出可视区。稳一点的做法是把字放在缺口区间的中点,用 (QSH+LOW)/2 这样的表达式算出来。
{ 文字放在缺口区间中点,避免贴着极值走 }
DRAWTEXT(QS,(QSH+LOW)/2,'缺口');
DRAWTEXT(QX,(HIGH+QXL)/2,'缺口');
线段标边界。需要把缺口的两条边界延到右侧、看清后面几根 K 是否回到区间里,就用 DRAWLINE 连接两个点。它的第五个参数是是否向右延伸,写 1 表示一直画到最右边。这类画法在读图时最直观,代价是图形元素多,缩图后容易糊成一片。
三类写法可以叠加,但要注意纵轴共用。把色柱与文字放在同一张副图上没问题;把缺口标注与量能类公式挤进同一张副图,量纲差得远,缺口那条带子会被压成一条线。这种情况下拆成两张副图,比调参数省事。
四、未回补怎么判:用 BARSLAST 比先后
缺口「补没补」这件事,本质是比两件事的先后:缺口出现的那一根,与价格重新回到缺口区间的那一根,谁在前。通达信里比先后用 BARSLAST:它返回上一次条件成立到当前的周期数。同一段比较里两个 BARSLAST 相减,就能定出谁先谁后。
{ 未回补的向上缺口:先找缺口,再找回到区间的根 }
QS:=LOW>REF(HIGH,1);
QSH:=REF(HIGH,1);
BQ:=BARSLAST(QS); { 上一个向上缺口距今多少根 }
HB:=BARSLAST(LOW<=QSH AND BQ>0); { 回到缺口下沿距今多少根 }
WB:=BQ>0 AND BQ<HB; { 缺口比回补更近 = 还没补 }
DRAWICON(WB,QSH,1);
{ 未回补的向下缺口同理,把方向换过来 }
QX:=HIGH<REF(LOW,1);
QXL:=REF(LOW,1);
BQ2:=BARSLAST(QX);
HB2:=BARSLAST(HIGH>=QXL AND BQ2>0);
WB2:=BQ2>0 AND BQ2<HB2;
DRAWICON(WB2,QXL,2);
这段代码里有三个容易踩的点,逐个说。
一是 BQ>0 这个守卫。如果历史上从来没有出现过缺口,BARSLAST 返回的值没有意义,后面的比较会得出随机结果,图上就会出现位置随机的图标。加上「距今大于零」这一条,等于把没有缺口的情形排除掉。
二是回补的判据用「回到区间」还是「穿过区间」。回到下沿就算补,是宽口径;要求收盘价穿到区间另一侧,是严口径。两种口径在震荡段上结论不同。写进公式时把口径说清楚,比争论哪种对更有用——同一支公式换口径,看到的结果本来就会变。
三是 DRAWICON 的图标编号。第三个参数是图标编号,不同版本预置的图标表不完全一样,写一个不存在的编号,函数不报错,只是什么都不显示。先在图上放两个不同编号试一次,确认能出图,再固定下来。
五、除权与周期切换带来的伪缺口
有一类缺口在图上真实存在,在数据里并不存在:除权造成的价格台阶。前复权与不复权切换时,除权日那根 K 的开盘价与前一天的最高价之间会出现一段跳空,判据会把它当成缺口标出来,可它不是市场行为留下的口子。
处理办法不在公式里,在数据设置里:把复权方式固定成一种,公式按固定口径写,图上就不会来回变。同一支通达信缺口显示公式,在不复权状态下看到的口子比前复权多,多出来的那部分,先怀疑除权,再怀疑公式。
周期切换也会改变结论。日线上的缺口在 60 分钟线上未必是缺口,因为 60 分钟 K 的最低价可能已经落进了日线缺口区间里;反过来,60 分钟线上的一串小缺口,在日线上会被合并成一根 K,全部消失。判断方法很简单:把同一支公式挂到两个周期上,同一个日期位置对比一次,出现「日线有、分钟没有」是正常的,出现「日线没有、分钟有」也正常。真正需要查的是同一周期内的前后不一致。
缺口本身的分类与回补后的读法,站内 量价形态与信号拆解 一栏里另有几篇讲条件写法与失效情形;本篇只讲「怎么把它标在图上」,两处的分工不要混。绘图函数的完整清单与参数顺序,见 通达信公式编写教程;标注写完了不显示、或者报参数不匹配,按 公式报错与卡顿排查 里编译期与显示期分开查的顺序走。
六、验证方法,以及这篇讲不到的边界
验证分三步,每步都有明确的观察点。
第一步验判据。在公式管理器里按 Ctrl+F 打开管理器,选中公式点「测试公式」,输出区会列出中间量的值。把 QS 为 1 的那几根找出来,回到 K 线上数一数这几根是不是真的跳空,两侧的价位与 REF(HIGH,1)、LOW 对不对得上。
第二步验渲染。把公式挂到副图与主图各一次。挂在主图时公式与 K 线共用坐标系,缺口带子的位置直接可比;挂在副图时公式有自己的纵轴,位置看着不对常常是坐标缩放的问题,不是取价错了。两处都挂一次,能把「公式错」与「挂载错」分开。
第三步验回补逻辑。找一段确定补过的缺口,看图标是否在回补那一根之后消失;再找一段到最新一根都没补的口子,看图标是否还在。两步都通过,判定逻辑才算站住。
这篇讲不到的边界有三处。一是不同版本对 STICKLINE 宽度参数与 DRAWICON 图标表的处理有差异,参数值要按本机试出来,不能照抄。二是本篇不涉及缺口的分类与强弱判断,那是形态层的活,判据与口径另有一套。三是标注只解决「看得见」,不解决「该怎么理解」,图上一根黄色带子说明这里有过跳空,说明不了后面会怎么走。
一句话收尾:通达信缺口显示公式的难点不在函数,在取价与口径。取价对上判据,口径写清楚,剩下的是排版。
