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