


先给这类"跟庄指标"做个体检,五个毛病我一个个挑
网上带“跟主力”“跟庄”“主力吸筹”这类名字的通达信指标,我这些年至少装过 200 个。装完之后大部分在一周内被我删掉,原因不是它们不出信号,而是它们的信号经不起最基本的追问。今天这篇我换个写法:不先讲原理,先当医生,把这类指标最常见的五个毛病摆出来,然后一条条给出修法。改完之后剩下的那个东西,就是这篇要给你的源码。
毛病 1:把"大单"当成"主力"
最常见的一种写法,是用 Level-2 的大单数据算净流入,然后画成一条"主力线"。问题在于:现在的机构下单基本全是算法拆单,一笔 500 万的买入会被拆成几百笔几万块的小单打出去;反过来,散户扎堆的时候也会出现连续的大额成交。大单和主力之间早就不是等号了。
毛病 2:只有一级信号,没有分层
很多跟庄指标只画一个"买"字,一出现就让你上。可现实是,资金介入是一个过程,不是一个瞬间。第一天出现买方占优,可能只是超跌反抽;连续几天买方占优并且价格确认突破,才是真的有东西。用一个信号覆盖两种状态,注定要么太早要么太晚。
毛病 3:能量值没有归一化,跨股票没法比
这个毛病很隐蔽。如果你直接用"位置 × 成交量"累加,那么一只日均成交 50 万手的票和一只日均成交 3 万手的票,算出来的数值差 15 倍以上。你在图上看到"能量线冲到 8000",完全不知道这个数是高是低。更麻烦的是,同一只票在放量周期和缩量周期的数值也没有可比性。
毛病 4:不排除刚上市和长期停牌的票
次新股上市初期没有足够的历史数据,60 日均线算出来是错的;长期停牌复牌的票会在复牌当天出现一根巨量,把所有均量基准全部污染,之后一个月内的量比数据都不能用。绝大多数论坛流传的选股公式对这两种情况完全没有防护,所以你会看到选股结果里莫名其妙冒出一堆次新股。
毛病 5:源码里藏着会漂移的函数
这是最要命的一条。很多号称"无未来"的指标,源码里其实用了 ZIG、PEAKBARS、TROUGHBARS 或者 DRAWLINE。这些函数的共同特征是:它们要等后面的 K 线走完,才能确定当前这个点算不算拐点。结果就是历史图上完美贴合每一个高低点,实盘打开却发现昨天的信号今天不见了。
改完之后剩下什么:能量线的三层结构
第一层:单日能量(今天买方赢了多少)
核心公式是 CLV =((收盘-最低) -(最高-收盘))÷(最高-最低)。这个值的范围是 -1 到 +1:收在最高点是 +1,收在最低点是 -1,收在正中间是 0。它衡量的是在当天所有多空交手之后,价格最终落在振幅的哪个位置。
然后用 CLV × 成交量,得到"带权重的单日能量"。同样是收在最高点,放量收在最高点和缩量收在最高点,意义完全不同。乘上成交量之后,这个差别就被表达出来了。
第二层:能量线(13 日累积并归一化)
对单日能量做 13 周期指数平滑,再除以 13 日均量,最后乘 100。这样得到的能量线 ZLX 是一个大致在 -100 到 +100 之间的数,跨股票、跨周期都可比。
13 这个周期的选择理由:短于 8 会让能量线跟着单日波动跑,失去"累积"的意义;长于 21 会让由负转正这个信号严重滞后。13 个交易日大约两周半,覆盖一轮完整的短线资金进出周期。
第三层:两级买点信号
| 信号 | 触发条件 | 含义 | 该做什么 |
|---|---|---|---|
| 注意买(黄字) | 能量线由负转正 且 收盘站上 MA20 | 买方刚开始占上风 | 加自选,观察,不动手 |
| 买成立(红字) | 注意买后 8 日内 + 收盘创 8 日新高 + 量能 > 1.3 倍 + MA5 > MA20 + 收盘 > MA5 | 买方优势被价格确认 | 进入交易决策流程 |
注意"买成立"里的 COUNT(注意买, 8) > 0 这个条件。它的作用是要求买成立必须发生在一次注意买之后不久,也就是说这两个信号是有因果关系的,不是各自独立触发。这个设计能过滤掉那种"没有前期资金铺垫、纯靠一天暴力拉升"的假突破。
适用行情:三个能用,三个别用
能用一:震荡市里找结构性机会。指数没方向但个股有分化的时候,能量线由负转正的票通常集中在少数几个板块,这时候按板块归类能量线转正的票,是找主线最省事的办法之一。
能用二:一只票横盘两个月以上,你想知道有没有人在里面。横盘期间能量线如果长期在 0 轴上方缓慢抬升,说明持续有买方在承接;如果在 0 轴附近来回穿,那就是真的没人管。
能用三:判断一段上涨是不是"虚"的。股价创新高但能量线没有同步创新高,说明推动这波上涨的成交质量在下降。这个用法不产生买卖信号,但作为持仓健康度检查很有用。
别用一:单边下跌的熊市中段。能量线在下跌中会反复穿越 0 轴(每次反弹都会转正),注意买信号会密集出现,几乎全是无效的。
别用二:日均成交额低于 3000 万的冷门票。归一化的分母(13 日均量)太小,一笔大单就能让能量线跳到 +60,完全失真。
别用三:连续一字板的票。一字板的 CLV 恒等于 0(最高=最低=收盘),能量线会被压平,读不出任何信息。
完整源码(主图 + 双选股)
一、主图指标:寻找机会跟主力
{寻找机会跟主力 主图指标}
{无未来函数 / 无跨周期引用 / 未使用任何Level-2函数}
{===== 均线系统 =====}
MA5:MA(CLOSE,5),COLORWHITE;
MA20:MA(CLOSE,20),COLORYELLOW,LINETHICK2;
MA60:MA(CLOSE,60),COLORMAGENTA;
{===== 第一层:单日能量 =====}
CLV:=((CLOSE-LOW)-(HIGH-CLOSE))/(HIGH-LOW+0.000001); {收盘在振幅中的相对位置}
MF:=CLV*VOL; {带成交量权重的单日能量}
{===== 第二层:能量线(归一化)=====}
V13:=MA(VOL,13);
ZLX:=EMA(MF,13)/(V13+0.000001)*100; {能量线,-100~+100,防分母为0}
ZLS:=EMA(ZLX,5); {能量线的平滑,用于判断趋势}
{===== 第三层:两级买点 =====}
ZY:=ZLX>0 AND REF(ZLX,1)<=0 AND CLOSE>MA20; {注意买:能量由负转正+站上20日线}
DRAWTEXT(ZY,LOW*0.982,'注意买'),COLORYELLOW;
NEWHIGH:=CLOSE>HHV(REF(HIGH,1),8); {收盘创8日新高}
VOLOK:=VOL>MA(VOL,5)*1.3; {量能放大}
TREND:=MA5>MA20 AND CLOSE>MA5; {短期均线多头}
MCL:=COUNT(ZY,8)>0 AND NEWHIGH AND VOLOK AND TREND; {买成立}
DRAWTEXT(MCL AND COUNT(MCL,3)=1,LOW*0.966,'买成立'),COLORRED;
{===== 能量状态底色 =====}
STICKLINE(ZLX>0 AND ZLX>ZLS,LOW*0.997,LOW*0.9985,8,0),COLORRED;
STICKLINE(ZLX>0 AND ZLX<=ZLS,LOW*0.997,LOW*0.9985,8,0),COLOR0088FF;
STICKLINE(ZLX<=0,LOW*0.997,LOW*0.9985,8,0),COLORGREEN;
{===== 能量数值标注(仅信号日)=====}
DRAWTEXT(ZY OR MCL,HIGH*1.025,'能量'+NUMTOSTR(ZLX,0)),COLORWHITE;
{===== 背离提示:价创新高但能量未创新高 =====}
PHIGH:=CLOSE>=HHV(CLOSE,20);
EHIGH:=ZLX>=HHV(ZLX,20);
DIVG:=PHIGH AND NOT(EHIGH) AND ZLX>0;
DRAWTEXT(DIVG AND COUNT(DIVG,5)=1,HIGH*1.045,'量价背离'),COLORGREEN;二、选股公式一:注意买(观察池)
{寻找机会跟主力-注意买选股}
{选出的票加自选观察,不作为直接买入依据}
MA20:=MA(CLOSE,20);
MA60:=MA(CLOSE,60);
CLV:=((CLOSE-LOW)-(HIGH-CLOSE))/(HIGH-LOW+0.000001);
MF:=CLV*VOL;
V13:=MA(VOL,13);
ZLX:=EMA(MF,13)/(V13+0.000001)*100;
TURNPOS:=ZLX>0 AND REF(ZLX,1)<=0; {能量线由负转正}
ABOVE20:=CLOSE>MA20; {站上20日线}
NOTHIGH:=CLOSE
