通达信划线指标公式之所以容易踩坑,是因为「线」这个字在图表语言里有两种完全不同的来源:一种来自数据序列,一种来自人工取点。把这两类混在被引用的公式里,图形看着没问题,一旦拿去做后续计算就会出偏差。这篇把划线类的构成拆成三层来说。

一、划线指标其实分两类来源

第一类是从数据算出来的线。均线、布林上下轨、通道线都属于这一类,它们的每个点都由同一套规则从行情数据推导,改变参数会整体平移或变形。这类线可以用数值参与比较、排序和条件判断。

第二类是从图上取点画出来的线。趋势线、水平颈线、形态的边界线属于这一类,它们的定义依赖某根 K 线的位置,改动起点就会改变整条线。这类线的本质是坐标,不是可参与运算的序列。

来源 代表 能否参与计算 改动起点的影响
数据推导 均线、通道、布林轨 可以,输出为序列 整体形状随之变化
人工取点 趋势线、颈线、形态边 不能直接参与 整条线随之移动

分清这一点,很多「公式写对了但结果不对」的疑问就解开了:拿趋势线的坐标去做数值比较,得到的不是趋势判断,只是两个数值的大小关系。

二、数据推导类:取值方式的差别

同样是画一条线,取哪个价格做基准会明显改变观感。收盘价、最高价、最低价三者画出的线叠在一起,能反映出不同的市场侧面。

{ 以不同价格源画线 }
收盘线: CLOSE;
最高线: HIGH;
最低线: LOW;

{ 常用均线组 }
短: MA(CLOSE, 5);
中: MA(CLOSE, 10);
长: MA(CLOSE, 20);

通达信划线指标公式里,画线只是输出。要让线之间发生关系,需要用比较表达式。判断短期线是否在长期线之上,就是两个序列的逐点比较,返回同样长度的布尔序列。

{ 线与线的关系 }
短在上: MA(CLOSE, 5) > MA(CLOSE, 20);

{ 两线交叉:前一根在下,这一根在上 }
上穿: CROSS(MA(CLOSE, 5), MA(CLOSE, 20));

CROSS 的语义是「前一根不满足、这一根满足」,与直接写大小比较不同。前者只在交叉那一根成立,后者在持续处于上方的整段都成立。选错会把一个瞬时信号变成一段区间信号。

三、通道与上下轨的构成

通道类指标由中轨和两条边界组成,边界的宽窄由波动幅度决定。它的价值在于把价格放进一个相对位置里看,而不是给出绝对的高低。

{ 以均值为中轨,用波动幅度定边界 }
中轨: MA(CLOSE, 20);
波动: STD(CLOSE, 20);
上轨: 中轨 + 2 * 波动;
下轨: 中轨 - 2 * 波动;

{ 价格相对位置:归一化到 0~1 }
位置: (CLOSE - 下轨) / (上轨 - 下轨);

最后一句把价格换算成相对位置,是通道类指标比较有用的一个衍生写法。它把不同价位的股票放进同一个尺度,便于跨标的比较。分母为 0 的极端情形需要单独处理,否则会出现除零。

四、人工取点类:只能画,不能算

趋势线、水平线在通达信里由绘图函数产生。它们的作用是视觉标注,不进入数据流。

{ 由两点定一条线段:只产生图形 }
DRAWLINE(条件甲, 位置甲, 条件乙, 位置乙, 1);

{ 在指定位置写字,同样是图形 }
DRAWTEXT(条件, 位置, '标记');
用绘图函数「得到」的线无法被后续表达式引用。写 趋势线 > CLOSE 这类比较,程序找不到可用的序列,结果不会如预期。若确实需要把人工判定转成可计算的条件,做法是把它写成明确的价格关系,例如「收盘价高于某段区间的最高点」,而不是先画线再比较。

五、坐标换算:把人工判定变成可算条件

想把「突破某条线」写进公式,需要先把线的定义翻译成数据条件。常见做法是用区间的高低点代替视觉上的线。

{ 用 N 根内的最高价代替压力线 }
区间高点: HHV(HIGH, 20);
突破: CLOSE > REF(区间高点, 1);

{ 用区间低点代替支撑线 }
区间低点: LLV(LOW, 20);
跌破: CLOSE < REF(区间低点, 1);

这里 REF 的作用是取前一根的值,避免当根自身参与比较导致永远不成立。这一步很容易漏,漏掉后条件几乎不会触发。

六、三个口径问题

问题 表现 处理方式
复权差异 除权日附近线的位置突变 统一到同一复权口径后对比
周期影响 日线一条线,周线另一条 先确认公式挂载的周期
样本长度 区间长度不同,高低点不同 把区间根数写成参数,便于对照

参数化是解决第三个问题的直接办法。把区间根数提出来作为可调参数,既能快速对照不同长度下的差异,也方便后续修改而不用重写公式。

{ 区间长度参数化 }
参数 N: 20
区间高点: HHV(HIGH, N);
参数并非越大越好。区间拉长会把更早的极值纳入,压力位随之下移或上移;区间缩短则更贴近近期形态。两个长度各跑一遍,比较信号数量与位置,比单看一个结果更有参考价值。

七、怎么验证一条划线指标

验证一条通达信划线指标公式,第一步是把线单独显示,确认它的形状符合预期。均线类应当平滑,通道类应当有宽窄变化,这些都直观可见。

第二步,检查线与线的交叉是否只在该出现的位置出现。可以把交叉条件单独输出,看它的分布密度。

第三步,改动参数一档,观察信号的变化方向。合理的参数变动应当让信号数量单调变化,忽多忽少通常说明某处引用写错了。

第四步,把公式放到不同周期上跑一遍。日线上成立的交叉,在周线上未必出现,这不是错误,是周期差异。

相关的基础语法见 公式编写教程;交叉与阈值类判断的更多写法可对照 量价形态与信号拆解;参数如何影响输出密度见 指标原理与参数。

划线指标的核心不在画得像不像,而在定义得清不清楚。数据推导类的线只要口径统一就能稳定复现;人工取点类的线要先翻译成数据条件,才谈得上被公式使用。

本文讲的是公式写法与口径校验,不构成任何操作建议。软件版本与函数支持范围请以实际安装的通达信为准。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。