☰
通达信压力支撑指标公式源码:空间时间量化与避坑指南
2026/10/21 18:45:19 网站建设 项目流程

简介:这份文档面向通达信公式爱好者与股票技术分析初学者,围绕“空间与时间及压力与支撑”主题,提供主图指标公式源码及配套解析,帮助读者理解价格波动幅度、周期跨度与关键压力支撑位的量化表达方式。资源包共1个doc文件,约720KB,内容以源码文本与注释说明为主,便于直接复制到通达信公式管理器中使用。源码中运用DRAWLINE绘制高位价与低位价连线,借助CONST固定高点周期与底点周期,并通过DRAWTEXT_FIX在图表固定位置显示底点到高点幅度、近期低点到当前幅度、高点到当前周期等数据,同时调用CALCSTOCKINDEX获取大盘对应数值,形成个股与大盘的对比参考。目前已有67人学习。读者可从中获得一套可运行的指标框架、函数用法示例以及结合周期与幅度判断市场转折的思路,适合作为技术分析工具搭建与策略调整的参考素材。

1. 空间与时间及压力与支撑:一套指标公式到底在算什么

很多人第一次看到“空间与时间及压力与支撑通达信指标公式源码”这个标题,会以为它只是把几个常用指标拼在一起。实际做过盘面标注的人知道,它想解决的是一个很具体的问题:价格在某个区间里上下摆动时,哪些位置是真正有参考意义的压力与支撑,哪些只是噪音;以及当价格突破这些位置后,向上或向下还有多少“空间”,这个空间需要用多长时间去走完。通达信公式系统里,这类需求通常靠 DRAWLINE、DRAWTEXT、BARSLAST、HHV、LLV 这些函数组合实现,而不是单一指标能覆盖的。

这套东西适合两类人:一类是想把自己手工画线、标压力支撑的习惯固化成公式的从业者;另一类是已经会写基础通达信公式,但画出来的线要么滞后、要么乱跳,想搞清楚参数边界的人。它不解决预测问题,只解决“把已经发生的价格结构,用可复现的方式标出来”这个问题。下面按选型、实现、参数、避坑的顺序拆开讲。

2. 压力与支撑的识别逻辑:为什么不能用固定周期高低点

2.1 固定周期高低点为什么会翻车

最常见的入门写法是取 N 日内的最高价和最低价,直接画两条水平线。这个做法在单边行情里看着还行,一旦进入震荡就出问题:周期取小了,线跟着价格来回跳,今天画在 10.5,明天变成 10.8,参考价值归零;周期取大了,线又离当前价格太远,等价格碰到的时候行情已经走完大半。血泪经验是,固定周期高低点本质上是“最近 N 天极值”,它没有区分这个极值是“被反复验证过的”还是“一次性冲出来的”。

要让它稳定,至少要做两件事:一是把极值点从“周期内最高”改成“满足一定条件的摆动高点”,比如要求左右各若干根 K 线都不超过它;二是给画出的线加一个“有效性”判断,比如被触碰次数、距离当前 K 线的间隔。通达信里没有现成的摆动高低点函数,需要用 REF 和条件判断自己构造。

2.2 用摆动高低点构造压力支撑的公式骨架

下面这段是常见的摆动高低点识别写法,核心思路是:当前 K 线的高点,要高于左右各 M 根 K 线的高点,才算一个摆动高点。低点同理。

{摆动高低点识别,M 为左右比较根数} M:=5; {摆动高点:当前高点大于左右各 M 根的高点} SWING_HIGH:=H>REF(HHV(H,M),1) AND H>HHV(REF(H,M),M); {摆动低点:当前低点小于左右各 M 根的低点} SWING_LOW:=L<REF(LLV(L,M),1) AND L<LLV(REF(L,M),M); {记录最近一次摆动高点的价格和位置} LAST_HIGH:=REF(H,BARSLAST(SWING_HIGH)); LAST_LOW:=REF(L,BARSLAST(SWING_LOW)); {画水平线,从摆动点延伸到当前} DRAWLINE(SWING_HIGH,H,1,LAST_HIGH,0),COLORGRAY; DRAWLINE(SWING_LOW,L,1,LAST_LOW,0),COLORGRAY;

逻辑说明:HHV(H,M)是最近 M 根 K 线的最高价,REF(...,1)把它往前推一根,这样比较的是“当前高点”和“之前 M 根的高点”。第二个条件HHV(REF(H,M),M)是再往前 M 根,确保当前高点比左右两边都高。BARSLAST(SWING_HIGH)返回上一次摆动高点距离当前的 K 线数,REF(H, ...)取出那个高点价格。DRAWLINE的第二个参数用1表示从摆动点开始画,第四个参数0表示画到当前。

参数说明:M 是最关键的参数。M 取 3 到 5,适合日内或短周期,线会比较密;M 取 8 到 12,适合日线级别,线少但更稳。我一般会在日线上先用 M=5 看结构,如果线太乱就加到 8。注意DRAWLINE在通达信里如果起点条件不满足,整条线不会画出来,所以不要指望它自动补线。

2.3 压力支撑的有效性过滤

画出来的线不是每条都有用。常见的过滤条件是:这条线被价格触碰过至少两次,且最近一次触碰距离当前不超过 N 根 K 线。通达信里可以用COUNT和BARSLAST组合判断。

{统计最近 60 根内,价格触碰 LAST_HIGH 的次数} TOUCH_HIGH:=COUNT(ABS(H-LAST_HIGH)/LAST_HIGH<0.005,60); {最近一次触碰距离当前的 K 线数} LAST_TOUCH:=BARSLAST(ABS(H-LAST_HIGH)/LAST_HIGH<0.005); {有效压力:触碰次数>=2 且最近触碰在 30 根内} VALID_HIGH:=TOUCH_HIGH>=2 AND LAST_TOUCH<30; DRAWTEXT(VALID_HIGH AND SWING_HIGH,H,'压力'),COLORGREEN;

这里0.005是触碰阈值,表示价格距离线在千分之五以内算触碰。这个值不要设太小,否则永远统计不到;也不要设太大,否则把无关的波动也算进去。日线级别我一般用 0.005 到 0.01,短周期用 0.003 左右。

3. 时间与空间的量化:从画线到可计算的距离

3.1 空间怎么定义才不是玄学

空间在公式里必须落成一个数,否则没法比较。常见的定义有两种:一是当前价格到最近有效压力或支撑的百分比距离;二是突破压力后,用前一段行情的幅度去推算目标位。第一种简单直接,第二种需要先识别“前一段行情”。

{当前价到最近有效压力的空间百分比} SPACE_TO_HIGH:=(LAST_HIGH-C)/C*100; {当前价到最近有效支撑的空间百分比} SPACE_TO_LOW:=(C-LAST_LOW)/C*100; {突破压力后的目标位:用最近一段上涨幅度推算} RANGE_UP:=LAST_HIGH-LAST_LOW; TARGET_UP:=LAST_HIGH+RANGE_UP*0.618;

SPACE_TO_HIGH为正表示当前价在压力下方,数值越大说明离压力越远;为负表示已经突破。TARGET_UP用的是 0.618 这个常见比例,不是唯一选择,0.5 和 1.0 也常用。参数说明:RANGE_UP依赖LAST_HIGH和LAST_LOW的识别质量,如果摆动点本身画错了,目标位就没有意义。

3.2 时间维度用 BARSLAST 和周期计数落地

时间在通达信里通常用 K 线根数表示。比如“价格从上次触碰压力到现在过了多少根”“从摆动低点到当前过了多少根”。这些都可以用BARSLAST直接得到。

{距离上次触碰压力的 K 线数} BARS_SINCE_HIGH:=BARSLAST(ABS(H-LAST_HIGH)/LAST_HIGH<0.005); {距离上次摆动低点的 K 线数} BARS_SINCE_LOW:=BARSLAST(SWING_LOW); {时间窗口过滤:只在距离摆动点 20 到 60 根之间标注} TIME_WINDOW:=BARS_SINCE_LOW>=20 AND BARS_SINCE_LOW<=60; DRAWTEXT(TIME_WINDOW AND SWING_LOW,L,'时间窗'),COLORYELLOW;

逻辑说明:BARSLAST返回的是上一次条件成立到当前的 K 线数,这个数就是时间维度。TIME_WINDOW用来过滤掉太近或太远的摆动点,太近的还没形成结构,太远的已经失效。参数说明:20 和 60 这两个数不是固定的,日线级别可以用 20 到 60,短周期可以缩到 10 到 30。关键是让标注只出现在结构还在起作用的时间段内。

3.3 把空间和时间合成一个可排序的参考值

单独看空间或时间都不够,实际用的时候往往想知道“哪个位置空间大、时间也合适”。可以做一个简单的加权值,把空间百分比和时间根数归一化后相加。

{空间归一化:用最近 60 根内的最大空间做分母} MAX_SPACE:=HHV(SPACE_TO_HIGH,60); NORM_SPACE:=SPACE_TO_HIGH/MAX_SPACE; {时间归一化:用 60 做分母} NORM_TIME:=BARS_SINCE_LOW/60; {综合参考值,空间权重 0.6,时间权重 0.4} SCORE:=NORM_SPACE*0.6+NORM_TIME*0.4; DRAWNUMBER(SCORE>0.5,L,SCORE),COLORWHITE;

这个SCORE不是买卖信号,只是一个排序参考。权重 0.6 和 0.4 可以根据自己的偏好调,但不要两边都设 0.5,那样等于没区分。注意MAX_SPACE如果为 0 会导致除零,实际写的时候要加一个IF(MAX_SPACE=0,1,MAX_SPACE)的保护。

4. 避坑与排查:画线公式最常见的 5 个翻车点

4.1 线画出来了但一直不消失

现象:摆动高点已经过去很久,价格早就跌下去了,那条压力线还挂在图上。原因:DRAWLINE的起点条件用的是SWING_HIGH,只要历史上出现过一次,线就会一直画到当前。解决:在DRAWLINE的起点条件里加时间或价格过滤,比如SWING_HIGH AND BARSLAST(SWING_HIGH)<60,让超过 60 根 K 线的摆动点不再画线。

4.2 触碰次数统计永远为 0

现象:明明价格碰到过那条线,TOUCH_HIGH还是 0。原因:阈值0.005设得太小,或者LAST_HIGH取的是REF(H, BARSLAST(SWING_HIGH)),而BARSLAST在第一次出现前返回的是无效值。解决:先用DRAWNUMBER把LAST_HIGH和H的差值打出来看,确认数量级;再把阈值调到 0.01 试。另外要确保SWING_HIGH至少出现过一次,否则LAST_HIGH是空值。

4.3 参数 M 改大后线变少但滞后严重

现象:M 从 5 改成 10,线确实少了,但每次标注的位置都比实际转折晚好几根。原因:摆动高低点本身需要右侧 M 根 K 线确认,M 越大确认越晚。解决:这是原理决定的,不能消除。折中办法是用两个 M,比如 M1=3 做快速标注,M2=8 做确认标注,快速标注用浅色,确认标注用深色,自己看的时候有区分。

4.4 空间百分比出现负值或异常大数

现象:SPACE_TO_HIGH打出 -50 或者 300 这种数。原因:LAST_HIGH取到了很久以前的高点,或者C在除权日前后没有复权。解决:在公式里加LAST_HIGH>0 AND C>0的保护,并且尽量在复权数据上跑。除权日附近的空间计算本身就不准,这是数据问题,不是公式问题。

4.5 综合参考值 SCORE 一直不变

现象:SCORE在好几根 K 线里都是同一个数。原因:BARS_SINCE_LOW和SPACE_TO_HIGH都依赖LAST_LOW和LAST_HIGH,如果最近没有新的摆动点,这两个值就不变。解决:这是正常的,SCORE本来就是结构级别的参考,不是每根 K 线都变。如果想让它在每根 K 线上都有变化,可以把C直接放进空间计算里,但那样会引入更多噪音。

5. 进阶用法:把公式输出成可复用的看盘模板

5.1 用 DRAWTEXT_FIX 做固定位置的信息面板

通达信支持在屏幕固定位置显示文字,用DRAWTEXT_FIX。把空间、时间、触碰次数这几个值集中显示在左上角,比在 K 线上到处标数字清爽得多。

{固定位置信息面板,X 和 Y 是屏幕坐标比例} DRAWTEXT_FIX(1,0.01,0.05,0,'最近压力: '+CON2STR(LAST_HIGH,2)),COLORGREEN; DRAWTEXT_FIX(1,0.01,0.10,0,'压力空间%: '+CON2STR(SPACE_TO_HIGH,2)),COLORGREEN; DRAWTEXT_FIX(1,0.01,0.15,0,'最近支撑: '+CON2STR(LAST_LOW,2)),COLORRED; DRAWTEXT_FIX(1,0.01,0.20,0,'支撑空间%: '+CON2STR(SPACE_TO_LOW,2)),COLORRED; DRAWTEXT_FIX(1,0.01,0.25,0,'距支撑K线: '+CON2STR(BARS_SINCE_LOW,0)),COLORYELLOW;

CON2STR把数值转成字符串,第二个参数是小数位数。DRAWTEXT_FIX的第一个参数1表示显示,0.01和0.05是横纵坐标比例,0表示左对齐。这个面板的好处是不占 K 线空间,而且数值变化时一眼能看到。

5.2 用条件选股验证压力支撑的有效性

公式写完不能只看图,要用条件选股跑一遍历史,看“触碰有效支撑后反弹”这个逻辑到底有没有统计优势。下面是一个简单的选股条件:当前价在有效支撑附近,且距离支撑的 K 线数在时间窗口内。

{选股条件:价格在有效支撑上方 1% 以内,且支撑在 20 到 60 根内} NEAR_LOW:=ABS(C-LAST_LOW)/LAST_LOW<0.01; VALID_LOW:=COUNT(ABS(L-LAST_LOW)/LAST_LOW<0.005,60)>=2; SELECT:NEAR_LOW AND VALID_LOW AND BARS_SINCE_LOW>=20 AND BARS_SINCE_LOW<=60;

把这个条件放进条件选股,跑最近一年的数据,看选出来的股票后续 5 根、10 根 K 线的表现。注意这不是让你直接照着买,而是验证“有效支撑”这个定义在你的标的池里有没有统计意义。如果选出来一堆后续继续跌破的,说明阈值或时间窗口要调。

5.3 参数表:不同周期下的推荐取值

周期M(摆动确认根数)触碰阈值时间窗口空间权重
15 分钟30.00310-300.5
60 分钟40.00515-400.6
日线5-80.00820-600.6
周线8-120.0110-300.7

这张表是我自己跑下来比较顺手的取值,不是标准答案。周线的空间权重调高,是因为周线级别时间窗口本身就不敏感,空间距离更有参考意义。短周期反过来,时间窗口更重要。

5.4 一个我自己的习惯

我写这类公式有个习惯:先把所有中间变量用DRAWNUMBER或DRAWTEXT_FIX打出来看一遍,确认每个值都在合理范围内,再去做画线和选股。很多翻车不是逻辑错,是某个中间变量在特定数据下变成了 0 或者负数,导致后面的判断全乱。这个习惯让我少熬了很多个晚上。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询