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 几乎没用:它不分方向,也不说今天发生了什么。实用的做法是三个条件各管一件事:
- is_20d_breakout == 1:今天发生了什么——收盘创 20 日新高。这是事件。
- adx_14 > 25:环境如何——趋势是否已成立。这是过滤器。
- 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.20 | 41.50 |
| ADX(14) | 17 | 31(且上升) |
| 量比 | 1.1x | 1.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 不连接券商,也不下单。它只是按你写好的规则扫描市场,把符合条件的股票列进当天的信号清单。是否操作、如何下单,仍然由你自己决定。