跳到主要内容

吊灯止损详解:跟着一笔交易算一遍

用一张七天的表格,把 ATR、止损线、只上不下这三件事一步步算出来。看完你就能自己复算回测里的每一笔出场。

阅读 7 分钟

上一篇说了趋势跟踪需要一条「只上不下」的止损线。这篇把这条线怎么算,从头到尾算一遍。

第一步:ATR 是什么

ATR 的全称是平均真实波幅,它回答一个问题:这只股票平均每天会动多少钱?

先算单日的「真实波幅」TR,取三个数里的最大值:

TR = max(今日最高 - 今日最低,
         |今日最高 - 昨日收盘|,
         |今日最低 - 昨日收盘|)

后两项是为了处理跳空。如果今天开盘就比昨天收盘高出一大截,只看今天的高低点会低估实际发生的价格移动。

把 TR 做平滑(默认 14 天)就得到 ATR。ATR 的单位是元,不是百分比——这一点很重要:它让止损距离自动适配标的的波动水平,你不需要为高波动的股票单独放宽止损。

第二步:止损线的公式

止损线 = 持仓期间的最高价 - ATR × 倍数
生效止损 = 从入场至今算出的所有止损线里的最大值

第二行是全部关键。止损线只会往上走。 价格回落时,「持仓期间的最高价」不变,但 ATR 可能变大,公式算出的数会变小——这时我们不采用它,继续沿用之前更高的那个值。

我们的引擎用了两个倍数:

  • entry_mult = 2.0:入场当天的初始止损,贴得近一些;
  • exit_mult = 3.0:之后每天的跟踪止损,放得宽一些,给趋势留空间。

第三步:跟着一笔交易算七天

假设某只股票在第 1 天满足入场条件(收盘价站上 100 日均线,且创下 22 日新高),收盘价 101.00 元买入。

最高价收盘价ATR持仓最高价公式算出的线生效止损
1102.00101.004.00102.00102.00 − 2×4.00 = 94.0094.00
2106.00105.004.20106.00106.00 − 3×4.20 = 93.4094.00
3110.00109.004.50110.00110.00 − 3×4.50 = 96.5096.50
4109.00104.004.80110.00110.00 − 3×4.80 = 95.6096.50
5118.00117.005.00118.00118.00 − 3×5.00 = 103.00103.00
6119.00112.005.40119.00119.00 − 3×5.40 = 102.80103.00
7114.005.40119.00当日最低跌破 103.00,出场

逐行看几个要点:

  • 第 1 天用的是 entry_mult = 2.0,所以止损是 102 − 8 = 94,而不是 90。初始止损更紧,是因为这一刻你对这笔交易还没有任何浮盈作缓冲。
  • 第 2 天公式算出 93.40,比昨天的 94.00 低。我们不采用它,止损保持 94.00。这就是「只上不下」。
  • 第 4 天价格回落(收盘从 109 跌到 104),ATR 还变大了,公式算出 95.60。同样低于前一日的 96.50,止损保持 96.50 不动。
  • 第 5 天大涨,持仓最高价抬到 118,止损一跃升到 103.00。此时这笔交易已经锁定盈利:即使明天就被止损,出场价 103 仍高于入场价 101。
  • 第 7 天盘中最低跌破 103.00,触发出场。

第四步:这笔交易的账

  • 入场 101.00,出场 103.00,+1.98%
  • 期间最高收盘价 117.00,浮盈一度到 +15.8%
  • 也就是说,从最高点回撤到出场,交出了约 12 个百分点。

这一点必须讲清楚,因为它是新手最容易失望的地方:跟踪止损一定会让你交出一部分利润。 它的设计目标不是在最高点卖出——没有任何规则能做到那件事——而是保证你不必判断顶部在哪里,就能把大部分趋势留在手里。

代价与收益是同一枚硬币:正因为止损放得足够宽(3 倍 ATR),第 4 天和第 6 天的回落才没有把你洗出去,第 5 天的大涨你才吃得到。如果把 exit_mult 调到 1.5,第 4 天你就出场了,后面那段涨幅与你无关。

第五步:自己动手改一个参数

打开回测工具,用默认参数跑一次,记下交易次数、胜率、总收益。然后只改一个参数:

  • **exit_mult 从 3.0 调到 2.0**:止损变紧,交易次数增加,单笔平均盈利下降。看看总收益是变好还是变差。
  • **exit_mult 从 3.0 调到 5.0**:止损变松,被洗出的次数减少,但每次出场都要回吐更多。

你会发现两个方向都不是单调变好的——存在一个区间,太紧和太松都更差。找到这个区间的大致位置,比记住某个「最优值」有用得多。至于为什么不该去追求那个最优值,见《回测的三个陷阱》里关于过拟合的部分。

常见疑问

止损用收盘价还是盘中价触发? 我们的引擎用盘中最低价触发,这与实盘中挂止损单的行为一致,也更保守。用收盘价触发会让回测结果偏好看。

跳空低开穿过止损线怎么办? 按开盘价成交,实际亏损大于计划亏损。止损是价格水平,不是保险合约,这个风险无法通过调参数消除,只能靠控制单笔仓位来限制。

能不能加止盈? 可以加,但趋势跟踪的收益高度集中在少数几笔大赚上,设置固定止盈会把这些交易提前截断,通常会显著降低总收益。这也是这类策略默认不设盈利目标的原因。

本文仅用于量化技术研究与教育目的,不构成任何投资建议。历史回测结果不代表未来收益,交易风险由投资者自行承担。

接下来

把回测面板从左到右读一遍,每个指标是什么、多少算好、什么情况下它会骗你。附一份跑完回测就能用的核对清单。