ADX 怎么用?用趋势强度过滤假突破的实操方法(含参数与规则示例)

ADX 不告诉你股价会涨还是会跌,它只回答一个问题:眼下有没有一条明确的趋势。正因为如此,它最合适的位置不是"买入信号",而是挂在突破规则后面的一道过滤器——同样是创 20 日新高,ADX 在 17 和在 31 时,你面对的是两种完全不同的市场状态。

本文要点

  • ADX(14) 衡量趋势的强度,不分方向。它由 +DI 和 −DI 计算而来,取值范围 0–100。
  • 常用读法:低于 20 基本无趋势,20–25 是灰色地带,高于 25 算趋势成立,高于 40–50 说明趋势很强但也可能已经走了一大段。
  • ADX 天生滞后,所以不要拿它当触发器;把它当过滤器,用来回答"这次突破发生在什么环境里"。
  • 单一数值不如方向重要:ADX 从 18 升到 26,比它一直躺在 30 更有意义。应用里给的是数值,可以用均线条件近似"趋势在加强"。
  • ADX 高不等于在涨。强势下跌趋势的 ADX 同样很高,方向必须由价格和均线条件另外确认。

ADX 量的是趋势强度,不是方向

ADX 全称平均趋向指数,标准参数 14 日。计算分三步:先把每天向上、向下的有效位移分别平滑成 +DI 和 −DI;再用两者之差除以两者之和得到 DX;最后把 DX 做 14 日平滑,就是 ADX。这个构造带来两个特点:它只看 +DI 和 −DI 差多少,不管谁大,所以涨得顺和跌得顺,ADX 都会很高;它经过两次平滑,天然比价格慢。

ADX(14) 区间通常含义对突破规则的意义
0–20没有明确趋势,横盘震荡突破多为假突破,容易被打回区间
20–25灰色地带,趋势可能在形成需要成交量、均线等其他条件补充
25–40趋势成立且在推进突破有趋势背书,是过滤器想放行的区域
40–50 以上趋势很强,常常已走了一段仍可能延续,但追高风险上升

这些区间是经验读法,不是精确分界。25 常用,是因为它在"过滤掉大部分横盘"和"不错过太多趋势起点"之间较平衡;可以在回测里试 20、25、30。词条见 ADX(14)。

为什么 ADX 滞后,以及为什么这不要紧

两次 14 日平滑意味着,趋势真正启动后,ADX 往往要过一两周才能从 20 以下爬到 25 以上。等它过 25 再买,一定错过起点——这也是很多人试过 ADX 就放弃的原因:他们把它当成了触发器。

触发器的任务是"告诉我今天动手",必须及时;过滤器的任务是"告诉我今天的环境值不值得动手",可以慢,只要不出错。把 ADX 放在 is_20d_breakout 后面,你其实在问:这只股票创 20 日新高时,市场是在按趋势运行,还是仍在箱体里乱撞?对这个问题,滞后不是缺点,而是一种确认。

代价也要说清:ADX 会放走一部分真突破,因为有些趋势在 ADX 还很低时就启动了。少接假突破、也少接真起点,这是过滤器的固有取舍。回测里要看的,是过滤后的胜率和盈亏比有没有改善,而不是某一次错过。

把 ADX、突破和成交量组合起来

单独一条 adx_14 > 25 几乎没用:它不分方向,也不说今天发生了什么。实用的做法是三个条件各管一件事:

  1. is_20d_breakout == 1:今天发生了什么——收盘创 20 日新高。这是事件。
  2. adx_14 > 25:环境如何——趋势是否已成立。这是过滤器。
  3. vol_vs_avg20d > 1.5:有没有人跟——成交量至少是 20 日均量的 1.5 倍,突破不是低量漂上去的。词条见 量比。

还有一层常被忽略:ADX 的方向比数值更重要。从 18 升到 26 说明趋势在加强;从 45 掉到 30 虽仍在 25 以上,趋势其实在减弱。Stock Compass 里 adx_14 给的是当天数值,没有"ADX 上升"条件。可行的近似是要求价格结构本身已在走趋势,例如加 ma20_above_ma50 == 1(20 日线在 50 日线之上)或 days_above_ma20 >= 10(连续 10 天站上 20 日线)。这些条件成立时,ADX 多半也在上升或高位,还顺带解决了方向问题。

完整的 20 日突破策略怎么回测,可以看这篇;怎么把这类逻辑写成规则,见把想法写成买入规则。

一个例子:同样是突破,ADX 17 和 ADX 31

下面两笔都是示意,用来说明过滤器在做什么,不是真实交易记录。

A 股票过去两个月在 36–41 美元之间横盘,某天收盘 41.20 创 20 日新高,ADX(14) 为 17。B 股票过去一个月从 34 稳步走到 40,回调很浅,某天收盘 41.50 创 20 日新高,ADX(14) 为 31,且在过去 10 个交易日里从 22 升上来。两笔都用同一套退出规则:浮亏超过 5% 或收盘跌破 20 日低点即清仓。

A 股票B 股票
突破价41.2041.50
ADX(14)1731(且上升)
量比1.1x1.8x
均线状态MA20 与 MA50 缠绕MA20 在 MA50 之上
过滤结果被 adx_14 > 25 拦下通过
示意走势3 天后回到区间内,第 6 天触发 −5% 止损三周后到 46 附近,浮盈约 +10.8%

A 是横盘市场里的典型假突破:创新高只是箱体上沿的又一次试探,没有趋势背书,也没有量能跟进。B 不是因为 ADX 高才涨,而是它本来就在趋势里,突破只是延续,ADX 只是把这个状态量化出来。

再强调一次:B 也完全可能失败。过滤器改变的是一批交易的概率分布,不是任何一笔的结局,它的价值只能在几十上百笔的回测里看出来。

ADX 会错在哪里

  • 急涨之后的横盘。ADX 是平滑值,价格已横盘一两周,ADX 可能还在 30 以上,这时放行的突破其实发生在一个正在退化的趋势里。所以用均线条件辅助,比只看数值更稳。
  • 强势下跌也是高 ADX。从 60 跌到 40 的股票,ADX 可以轻松超过 40。规则里只有 adx_14 > 25,就会把这种股票的反弹也放进来。方向必须来自价格和均线:is_20d_breakout 要求创新高,加上 ma20_above_ma50,基本能排除下跌趋势中的反弹。
  • 门槛太高。过滤线设到 40,只剩下已经走了一大段的趋势,追高风险明显上升;若一定要在高位介入,至少收紧止损。

在 Stock Compass 里怎么设

买入组要求四个条件同时满足;退出组两条任意一条触发即清仓。策略只是扫描器,告诉你今天哪些股票符合条件,下不下单仍是你自己的事。

{
  "name": "20日突破 + ADX过滤",
  "market": "us",
  "rules": {
    "buy": {
      "v": 2,
      "outerOp": "OR",
      "groups": [
        {
          "innerOp": "AND",
          "conditions": [
            { "indicator": "is_20d_breakout", "operator": "==", "value": 1 },
            { "indicator": "adx_14", "operator": ">", "value": 25 },
            { "indicator": "vol_vs_avg20d", "operator": ">", "value": 1.5 },
            { "indicator": "ma20_above_ma50", "operator": "==", "value": 1 }
          ]
        }
      ]
    },
    "add": { "v": 2, "outerOp": "OR", "groups": [] },
    "trim": { "v": 2, "outerOp": "OR", "groups": [] },
    "exit": {
      "v": 2,
      "outerOp": "OR",
      "groups": [
        {
          "innerOp": "AND",
          "conditions": [
            { "indicator": "floating_loss_pct", "operator": ">", "value": 5 }
          ]
        },
        {
          "innerOp": "AND",
          "conditions": [
            { "indicator": "is_20d_breakdown", "operator": "==", "value": 1 }
          ]
        }
      ]
    }
  }
}
  • is_20d_breakout == 1:今天收盘创 20 日新高,这是触发事件。
  • adx_14 > 25:趋势已经成立,横盘期的突破会被拦下。
  • vol_vs_avg20d > 1.5:成交量至少是 20 日均量的 1.5 倍,突破有资金跟进。
  • ma20_above_ma50 == 1:均线多头排列,既确认方向向上,也近似"ADX 处于上升或高位"。
  • floating_loss_pct > 5:浮亏超过 5% 清仓,不给假突破二次伤害的机会。
  • is_20d_breakdown == 1:收盘跌破 20 日低点清仓,把退出和买入理由绑在一起。

想放宽,可以把 adx_14 的门槛降到 20 再看回测;想避免追高,可以再加一条 adx_14 < 45。止盈止损怎么配,见止盈止损规则。

常见错误

  • 把 ADX 当买入信号。"ADX 过 25 就买"会让你系统性地买在趋势中段,还常买在没有方向的高 ADX 里。
  • 只看数值不看方向。ADX 30 正从 48 往下掉,和 ADX 30 从 18 升上来,是两种截然不同的状态。
  • 一个市场的参数套到所有市场。港股、A 股、美股波动结构不同,同样的 25 含义不同,换市场要重新回测。
  • 看几笔就下结论。一两次"被 ADX 拦下的突破后来涨了"说明不了什么,过滤器的作用只在样本量足够时才显现。

小结

ADX 量的是趋势有多明确,不是方向,也不是买点。它天生滞后,不该当触发器,但正因为慢,拿来确认"这次突破发生在趋势里还是箱体里"反而合适。实操上把它挂在 is_20d_breakout 后面,用成交量确认有人跟、用均线排列确认方向并近似"ADX 在上升",就是一套能直接回测的规则。记住两点:强势下跌的 ADX 同样很高,方向必须另外确认;过滤器改变的是一批交易的胜率,不是任何一笔的结果,结论只能来自回测。

常见问题

ADX 多少算有趋势?

常见读法是 ADX(14) 低于 20 没有明确趋势,20–25 是灰色地带,高于 25 算趋势成立。高于 40–50 说明趋势很强,但往往已经走了一段。这些是经验区间,不是精确分界;在回测里分别试 20、25、30,看哪个在你的股票池上站得住。

ADX 高是不是就代表股价在涨?

不是。ADX 只量趋势有多强,不管方向,急跌和急涨一样会产生高 ADX。方向必须由价格或均线条件来确认,比如要求创 20 日新高,并且 20 日均线在 50 日均线之上。

为什么不直接在 ADX 突破 25 时买入?

因为 ADX 经过两次平滑、滞后于价格,它突破 25 时趋势通常已经启动了一段,你会买在中段。它还会在下跌趋势里触发。ADX 更适合作为过滤器去给另一个触发条件(比如突破)把关,而不是自己充当触发器。

在 Stock Compass 里怎么要求 ADX 上升?

adx_14 指标给的是当天数值,目前没有直接的"ADX 上升"条件。可行的近似是加一条均线条件,例如 ma20_above_ma50 == 1 或 days_above_ma20 >= 10。价格结构处于这种趋势状态时,ADX 大多也在上升或高位,同时你还顺带确认了方向。

规则触发后 Stock Compass 会替我买入吗?

不会。Stock Compass 不连接券商,也不下单。它只是按你写好的规则扫描市场,把符合条件的股票列进当天的信号清单。是否操作、如何下单,仍然由你自己决定。