先给结论,再讲道理:"回踩不破"的核心应该是收盘价守住 + 实体不破,而不是最低价刚好在某条线上。"不破"应该给一个容忍度(比如收盘价在20日线上方1%以内都算回踩),同时要看收盘位置而非盘中瞬间。原版公式用 L>=MA20 一刀切,是"精确但错误"的典型。
一、原版源码长这样
MA5:=MA(C,5); MA10:=MA(C,10); MA20:=MA(C,20); MA60:=MA(C,60);
回踩:=L<=MA20*1.02 AND L>=MA20; {最低价触及20日线附近且不破}
不破:=C>MA20 AND C>REF(C,1); {收盘在20日线上方且收阳}
选股:回踩 AND 不破;源码用最低价判断"是否触及",用收盘价判断是否"不破",但无容忍度设置,也无趋势过滤。
二、公式体检评分表
以下为基于源码逻辑的主观结构评分,未经历史数据验证,仅作拆解参考。
| 评分项 | 得分 | 说明 |
|---|---|---|
| 语法完整性 | 92 | 通达信可运行,无语法错误 |
| 逻辑完整度 | 50 | "不破"定义过于严格,无容忍度,无趋势过滤 |
| 信号可用性 | 55 | 盘中假破被误杀,趋势向下时也入选 |
系列编号:本文为「1000个公式拆解」系列 · 均线系 · 第 4 篇(4/1000)。
三、问题一:L>=MA20 太死板
最低价瞬间刺穿20日线1分钱,收盘收回来——这是典型的"盘中洗盘",但公式判为"破了"。反过来,收盘价在20日线上方,但全天都在线下方运行(只是尾盘拉回),公式却判为"没破"。判断标准应该是收盘价,而非最低价。
四、问题二:没有容忍度
"回踩"应该是一个区间概念。收盘价在20日线上方0.5%以内,都是健康的回踩。原版要么"刚好在线上"要么"在线下",没有过渡带。
五、问题三:缺少趋势过滤
如果MA60还在向下,20日线附近的"不破"很可能只是下跌途中的小反弹。原版公式完全不看中长期趋势。
六、适用环境
上升趋势中的回踩 ✓ 突破后回踩确认 △ 需量能配合 下跌趋势中的反抽 ✗
七、修复版源码
{=== 回踩20日线不破 · 修复版(通达信可运行)===}
MA5:=MA(C,5); MA10:=MA(C,10); MA20:=MA(C,20); MA60:=MA(C,60);
{=== 改动1:用收盘价判断是否"不破",给1%容忍度 ===}
回踩区:=C<=MA20*1.01 AND C>=MA20*0.99; {收盘在20日线上下1%以内}
{=== 改动2:收盘守住(不破20日线)===}
守住:=C>MA20 AND C>=O; {收阳线且在线上}
{=== 改动3:趋势过滤,MA60走平或向上 ===}
趋势垫:=MA60>=REF(MA60,1);
{=== 改动4:前期上涨确认(回踩前有涨幅)===}
前期涨幅:=C>MA20*1.05; {当前价比20日线高5%以上,确认有过上涨}
{=== 改动5:排除ST及数据不足 ===}
排雷:=NOT(NAMELIKE('ST') OR NAMELIKE('*ST')) AND COUNT(C>0,60)=60;
选股:回踩区 AND 守住 AND 趋势垫 AND 前期涨幅 AND 排雷;修复思路:用收盘价替代最低价判断"不破",给1%容忍度,要求MA60向上,并确认前期有过上涨(确保是"回踩"而非"阴跌")。
八、实战操作建议
用法:寻找上升趋势中,股价第一次回踩20日线且不破(收盘守住)的标的。
确认:回踩次日若放量阳线收复5日线,是极佳的介入点。
止损:跌破20日线3%或收盘连续2天在20日线下方,说明支撑失效,应止损。
九、三条启发
启发一:"不破"看收盘价,不看最低价。盘中刺穿是洗盘,收盘守住才是真支撑。
启发二:给"不破"一个容忍度。差一分钱算不算破?给1%的缓冲,公式更人性化。
启发三:回踩的前提是"有过上涨"。横盘中的触碰20日线,不叫回踩,叫震荡。

