夜雨聆风学习资料网

ARTICLE · 1112190

通达信"揉搓线"指标源码解读:长上影试盘+长下影探底的双阳揉搓逻辑

通达信"揉搓线"指标源码解读:长上影试盘+长下影探底的双阳揉搓逻辑

温馨点击上方"风帆量化" → 点击右上角 "..." → 选 "设为星标"★

今天拆解一款把长上影试盘与长下影探底两天的K线配成一组的通达信副图指标——「揉搓线」。

很多朋友的困惑是:一根长影线到底算"洗盘"还是"变盘"?只看单根K线,长上影容易被当成冲高出货,长下影容易被当成破位反抽,两种都容易误判。

「揉搓线」的做法很直接:不看单根,看两天的配对——第一天收阳、但留出超长上影(冲高回落);第二天收阳、但打出超长下影(探底回升)。价格上下反复被"搓揉",说明多空在同一区域激烈换手、价格却始终没被打下去,是很典型的盘中震荡结构。下面逐层拆解编写逻辑,最后附上完整源码。

一、这个指标在做什么?(整体逻辑速览)

该指标所有代码都围绕"两天影线的配对"这一件事展开,构建 6 层判定体系:

① 实体口径层:统一用 |收盘-开盘| 作为实体长度,影线长度必须达到实体的 2 倍以上才算"长影线"

② 昨日上影层:昨日收阳,且上影线 ≥ 2 倍实体(冲高回落),用 REF(...,1) 把条件搬到今天来判定

③ 今日下影层:今日收阳,且下影线 ≥ 2 倍实体(探底回升)

④ 两日配对层:同一条判定里同时要求"昨天像伞顶、今天像伞底",两日合成一个完整的揉搓结构

⑤ 标的过滤层:排除科创板(68)、北交所(8)以及 9、4 开头的代码,把涨跌幅制度不同的品种挡在外面

⑥ 输出层:副图输出一根加粗信号线,同一段源码装进选股公式即可全市场海选

核心定位:只做连续两日收阳、且影线强度足够的揉搓结构,不去猜单根K线的反转。

二、逐层拆解

第1层:影线强度的两种度量

A:=IF(C>O,C,O);AA:=(H-A)/(H-L)>0.7;

A 取开盘、收盘中的较高者——收阳时取收盘、收阴时取开盘,也就是"实体的上沿"。AA 用 (最高-A)/(最高-最低) 计算上影线占全天振幅的比例,大于 0.7 即上影线吃掉七成以上振幅。这是"影线强度"的另一种度量口径,在本指标中作为参考量保留。

学习要点:IF(C>O,C,O) 是"实体上沿"的通用写法,收阳收阴都不用改公式;用"影线 ÷ 振幅"可以直接得到影线在全天波动里的占比。

第2层:核心——两日揉搓的一体化判定

XG:REF((H-MAX(C,O))/ABS(C-O)>2 AND C>O,1)AND ((MIN(C,O)-L)/ABS(C-O)>2 AND C>O AND ZBCLGL),LINETHICK2;

这一行分两半读。前半是 REF(...,1):昨天 (最高-实体上沿)/|收盘-开盘| > 2 且收盘>开盘,即昨天收阳、上影线至少是实体的 2 倍,典型的冲高回落。后半是今天:(实体下沿-最低)/|收盘-开盘| > 2 且收盘>开盘,即今天收阳、下影线至少是实体的 2 倍,典型的探底回升。两半用 AND 串起来,就是"昨天伞顶 + 今天伞底"的揉搓结构。

学习要点:REF(表达式,1) 能把"昨天"的整段条件原封不动搬到今天用;用 MAX(C,O) / MIN(C,O) 分别取实体上下沿,比写一堆 IF 判断干净得多。

第3层:标的过滤——把不想要的票挡在外面

ZBCLGL1:=IF(CODELIKE('68') OR CODELIKE('8') OR CODELIKE('9') OR CODELIKE('4'),0,1);ZBCLGL2:=IF(CODELIKE('ST') OR CODELIKE('*ST') OR CODELIKE('*S') OR CODELIKE('S'),0,1);ZBCLGL:=ZBCLGL1 AND ZBCLGL2;

ZBCLGL1 把科创板(68 开头)、北交所(8 开头)以及 9、4 开头的代码排除掉,原因是这些品种的涨跌幅制度与主板不同,形态口径不宜混用;过滤结果 1 表示"通过"、0 表示"排除"。ZBCLGL2 的写法意图是排除 ST 类个股,但这里用的是 CODELIKE——它判断的是"证券代码"而不是"证券名称",而 'ST' 并不是代码前缀,所以这一条实际上不会命中,ZBCLGL2 恒等于 1。

学习要点:CODELIKE 匹配代码、NAMELIKE 匹配名称,两者不能混用;要排除风险警示股,应写成 NAMELIKE('ST')。写过滤条件前,先确定要匹配的到底是代码还是名字。

第4层:保留的辅助计算——价格中枢与大盘同步

ZBCL1:=(C*2+H+L)/4*10;ZBCL2:=EMA(ZBCL1,13)-EMA(ZBCL1,34);ZBCL3:=EMA(ZBCL2,5);ZBCL4:=2*(ZBCL2-ZBCL3)*5.5;ZBCL5:=(HHV(INDEXH,8)-INDEXC)/(HHV(INDEXH,8)-LLV(INDEXL,8))*8;ZBCL6:=EMA(3*ZBCL5-2*SMA(ZBCL5,18,1),5);ZBCL7:=(INDEXC-LLV(INDEXL,8))/(HHV(INDEXH,8)-LLV(INDEXL,8))*10;ZBCL8:=(INDEXC*2+INDEXH+INDEXL)/4;ZBCL9:=EMA(ZBCL8,13)-EMA(ZBCL8,34);LL:=(VOL=HHV(VOL,55.002) AND VOL>MA(VOL,55.002)*2.518);

ZBCL1 用 (2×收盘+最高+最低)/4×10 构造一个加权价格中枢;ZBCL2~ZBCL4 是它的 MACD 结构(快慢 EMA 之差为 DIF、DIF 再取 EMA 得 DEA、柱体放大 11 倍)。ZBCL5~ZBCL9 则把同一套算法搬到大盘指数上——INDEXC / INDEXH / INDEXL 分别是所在大盘指数的收盘、最高、最低价。LL 是一个"当日成交量即 55 日最大量、且高于 55 日均量 2.518 倍"的放量条件。

需要说明的是:这一整段在本指标的最终判定里并没有被引用,属于作者原稿的完整保留,也为后续扩展(例如把"个股与大盘同步""放量确认"再叠加进过滤条件)预留了接口。真正决定信号的就是第 2 层那一行。

学习要点:EMA(X,13)-EMA(X,34) 是最经典的 MACD 骨架,换成自己的价格中枢同样适用;HHV(VOL,N)=VOL 表示"今天就是 N 日内的最大量",是判断天量的常用写法。

三、实战图例:信号在图上长什么样?

下图是副图加载后的效果示意:当"昨天长上影 + 今天长下影"同时成立时,副图上出现一根加粗的信号线。

看图重点:信号线由公式里的 XG 输出,LINETHICK2 让它在副图上更醒目;把同一段公式装进"条件选股",就能在全市场里批量筛出当天符合揉搓结构的个股。图中信号仅展示公式输出形态,不构成投资建议。

四、版本差异对比

同一段源码,加载位置不同、用法也不同,两种用法的差别如下:

对比维度
副图指标用法
条件选股用法
输出内容
XG 信号线(0/1 阶梯,加粗)
只输出信号,不画线
显示参数
保留 LINETHICK2(线宽)
可去掉显示参数
使用位置
个股K线下方的副图区
选股平台 / 全市场海选
适用场景
单票跟踪、复盘对照形态
盘后批量筛选、建立观察池

五、实战使用注意事项(必看)

① 参数口径:影线须达实体 2 倍属于"强影线"标准,出信号偏少。想放宽,可把两处 >2 调成 >1.5,信号会明显增加。

② 过滤条件要复查:如前所述,ZBCLGL2 用 CODELIKE 判断 ST 实际不生效,若确实要排除 ST,请改用 NAMELIKE('ST')。

③ 实体过小的情形:当 |收盘-开盘| 极小时(十字星、一字板),"影线 ÷ 实体"的倍数会被放大,容易产生误信号,建议再叠加成交额或涨跌幅条件一起看。

④ 周期口径:建议在日线周期使用;副图与选股务必保持同一周期,否则同一只票的结论会不一致。

⑤ 大盘数据依赖:公式第 4 层用到 INDEXC / INDEXH / INDEXL,请确认本地已下载对应大盘指数的日线数据,否则这几行取不到值(不影响 XG 判定)。

六、延伸学习

1. REF(X,N) —— 引用 N 个周期前的数据,所有"昨日/前日条件"都靠它实现;

2. CODELIKE() / NAMELIKE() —— 分别按"代码"与"名称"做过滤,写过滤条件时不要混用;

3. MAX() / MIN() / ABS() —— 取实体的上下沿与实体长度,是影线类形态判定的基础工具。

七、完整源码(复制前请先对照上方逐层解读)

副图指标完整版(含选股输出行,可直接复用到条件选股):

ZBCL1:=(C*2+H+L)/4*10;ZBCL2:=EMA(ZBCL1,13)-EMA(ZBCL1,34);ZBCL3:=EMA(ZBCL2,5);ZBCL4:=2*(ZBCL2-ZBCL3)*5.5;ZBCL5:=(HHV(INDEXH,8)-INDEXC)/(HHV(INDEXH,8)-LLV(INDEXL,8))*8;ZBCL6:=EMA(3*ZBCL5-2*SMA(ZBCL5,18,1),5);ZBCL7:=(INDEXC-LLV(INDEXL,8))/(HHV(INDEXH,8)-LLV(INDEXL,8))*10;ZBCL8:=(INDEXC*2+INDEXH+INDEXL)/4;ZBCL9:=EMA(ZBCL8,13)-EMA(ZBCL8,34);A:=IF(C>O,C,O);AA:=(H-A)/(H-L)>0.7;ZBCLGL1:=IF(CODELIKE('68') OR CODELIKE('8') OR CODELIKE('9') OR CODELIKE('4'),0,1);ZBCLGL2:=IF(CODELIKE('ST') OR CODELIKE('*ST') OR CODELIKE('*S') OR CODELIKE('S'),0,1);ZBCLGL:=ZBCLGL1 AND ZBCLGL2;LL:=(VOL=HHV(VOL,55.002) AND VOL>MA(VOL,55.002)*2.518);XG:REF((H-MAX(C,O))/ABS(C-O)>2 AND C>O,1)AND ((MIN(C,O)-L)/ABS(C-O)>2 AND C>O AND ZBCLGL),LINETHICK2;

条件选股版(与上一版逻辑完全一致,仅去掉副图专用的画线参数 LINETHICK2,其余逐字相同):

ZBCL1:=(C*2+H+L)/4*10;ZBCL2:=EMA(ZBCL1,13)-EMA(ZBCL1,34);ZBCL3:=EMA(ZBCL2,5);ZBCL4:=2*(ZBCL2-ZBCL3)*5.5;ZBCL5:=(HHV(INDEXH,8)-INDEXC)/(HHV(INDEXH,8)-LLV(INDEXL,8))*8;ZBCL6:=EMA(3*ZBCL5-2*SMA(ZBCL5,18,1),5);ZBCL7:=(INDEXC-LLV(INDEXL,8))/(HHV(INDEXH,8)-LLV(INDEXL,8))*10;ZBCL8:=(INDEXC*2+INDEXH+INDEXL)/4;ZBCL9:=EMA(ZBCL8,13)-EMA(ZBCL8,34);A:=IF(C>O,C,O);AA:=(H-A)/(H-L)>0.7;ZBCLGL1:=IF(CODELIKE('68') OR CODELIKE('8') OR CODELIKE('9') OR CODELIKE('4'),0,1);ZBCLGL2:=IF(CODELIKE('ST') OR CODELIKE('*ST') OR CODELIKE('*S') OR CODELIKE('S'),0,1);ZBCLGL:=ZBCLGL1 AND ZBCLGL2;LL:=(VOL=HHV(VOL,55.002) AND VOL>MA(VOL,55.002)*2.518);XG:REF((H-MAX(C,O))/ABS(C-O)>2 AND C>O,1)AND ((MIN(C,O)-L)/ABS(C-O)>2 AND C>O AND ZBCLGL);

⚠️ 互动问答:

使用指标时遇到任何问题(如安装、信号解读等),欢迎在留言区提问,我会第一时间解答!

也可以分享你的使用心得 —— 这个指标帮你抓住过哪些机会。

👥 制作不易,麻烦点亮右下角的 "👍" + "❤" 支持一下!

📢 转发给身边朋友,一起交流进步~

👉 喜欢我的分享?记得关注我,持续更新干货!

⚠️ 免责声明

本文所有源码及解读内容仅为通达信公式编程教学,目的在于帮助读者理解指标编写逻辑和函数用法。文中提到的任何指标名称、信号条件、参数设置均不构成任何投资建议。

指标是辅助分析工具,其信号仅反映特定数学条件是否满足,不代表对未来走势的预测。实际使用时请务必结合自身判断和其他分析方法,理性决策。投资有风险,入市需谨慎。

相关学习资料