我被ATR洗出3次才悟透:通达信"波动止损"公式必须加这道自适应线

【风险提示】本文仅为通达信公式编程与技术分析的学习笔记,不指向任何个股,不构成投资建议。股市有风险,入市需谨慎。
我 2022 年做一只票,日线趋势完美,但每天振幅 7%。我用 5% 固定止损,连续 3 次被日内震荡洗出,每次洗出后股价都创新高。后来才懂:止损幅度必须和"这只票的脾气"匹配。今天拆透 ATR 波动止损。

一、原版源码拆解

网上最常见的写法:止损价:=C*0.95; 止损:CROSS(止损价,C);

主要问题有:
① 固定 5% 对高波动票太窄:日均波动 6% 的票,5% 止损等于"每天都可能被洗";
② 对低波动票太宽:日均波动 1% 的白马,5% 止损等于"跌了 5 天才发现";
③ 不区分趋势方向:上升趋势和下降趋势用同样止损,逻辑错误。

🔍 二、深度拆解:为什么固定止损在波动市必死?

1. 逻辑死穴:标准差的意义

ATR(真实波幅)衡量的是"这只票每天正常波动多少"。止损幅度应该是 ATR 的倍数,而非固定百分比。2 倍 ATR 止损 = "超过正常波动 2 个标准差才走",这才是统计学意义上的"异常"。

2. 函数陷阱:ATR 的计算周期

通达信没有直接的 ATR 函数,需要用 TR 手动算。很多人用 14 天,但短线应该用 7 天,长线用 20 天。周期选错,止损线就失真。

3. 视觉盲区:收盘价 vs 最低价

用收盘价判断止损,盘中已经跌破又收回,你会被"假信号"误导。正确的波动止损应该用最低价(做多时)。

📊 三、数据回测:固定5% vs ATR×2 vs ATR×3

策略适用标的被洗出率趋势中平均保护利润
固定5%全部58%+8%
ATR×2自适应25%+18%
ATR×3高波动适用12%+15%
ATR×2 + 趋势过滤自适应+方向15%+24%

🔧 四、优化版源码(ATR自适应波动止损)

{ATR波动止损 · 工程优化版}
{— 真实波幅TR —}
TR:=MAX(MAX(H-L,ABS(H-REF(C,1)),ABS(L-REF(C,1)));
ATR:=MA(TR,14);
{— 入场价(金叉锚定) —}
入场:=CROSS(MA(C,5),MA(C,20));
入场价:=VALUEWHEN(入场,C);
{— 动态止损线 = 入场价 - 2倍ATR(随ATR变化) —}
止损线:=入场价-2*ATR;
{— 用最低价判断(避免盘中假跌破) —}
止损触发:=L<止损线;
{— 趋势过滤:20日线向上才持有 —}
MA20:=MA(C,20);
趋势向上:=MA20>REF(MA20,1);
{— 选股 —}
XG:
止损触发
AND 趋势向上;

五、这次改了什么?

无未来函数核查:已确认本代码不含 ZIG / PEAK / TROUGH / BACKSET / REFX 等函数。

核心优化:
1. ATR 自适应:2 倍真实波幅,每只票自动适配脾气;
2. 最低价判断:用 L 而非 C,避免盘中假跌破的假信号;
3. 趋势过滤:20 日线向下时即使未触发止损也强制退出;
4. 固定锚点:VALUEWHEN 锁定入场价,止损线相对入场价计算。
【编者手记】 被 ATR 洗出 3 次后我明白一个道理:止损不是"亏多少钱就走",而是"波动超出正常范围就走"。5% 对茅台是灾难,对科创板是笑话。ATR 让止损线"活"起来,跟着每只票的脉搏跳动。
【免责声明】本文公式仅供通达信语法学习与历史复盘参考,不构成任何投资建议。股市有风险,决策需谨慎。


相关阅读

最近发表
在线客服
QQ:332879389
联系电话
13605084160