
一句话结论:ADX 用来过滤个股信号没用,用来判断大盘很有用。全 A 股 +DI 上穿 −DI 持有 20 天跑输全市场,加上「ADX > 25」反而更差;但在沪深 300 上,方向向上且 ADX > 20 才持有,10 年收益 +48.3%、最大回撤只有 −18.9%。
第三章的指标都在回答「往哪个方向走」。这一章开始回答另一个问题:现在到底有没有趋势? 很多趋势策略亏钱,就是因为在没有趋势的震荡市里来回打脸。ADX 就是为这个问题设计的。

一、原理和公式
DMI(趋向指标)由美国技术分析师 Welles Wilder 在 1978 年提出,包含三条线:
| 线 | 含义 | 怎么看 |
|---|---|---|
| +DI | 上涨的力量 | 今天的最高价比昨天高出多少,平滑后除以波动幅度 |
| −DI | 下跌的力量 | 今天的最低价比昨天低出多少,平滑后除以波动幅度 |
| ADX | 趋势的强度 | +DI 和 −DI 差距的平滑值,不分方向 |
关键在于 ADX 不管涨跌,只看强弱:
- – ADX < 20:没有明显趋势,震荡市。
- – ADX > 25:趋势明显。
- – ADX > 40:趋势非常强。
常见用法是把方向和强度结合起来:+DI 上穿 −DI 确定方向,ADX 大于 25 确认有趋势,才入场。青柠里 ADX 和 DMI 是同一套计算,默认周期 14。
二、青柠数据实验 1:ADX 能过滤掉假信号吗
全 A 股 2016 年 1 月至 2026 年 10 月。+DI 上穿 −DI 当天记一次信号,第二天开盘买入,持有 20 天,和同一天全部股票平均收益比较。
| 规则 | 信号次数 | 20 天收益 | 胜率 | 20 天超额 | 扣 0.15% 成本后 |
|---|---|---|---|---|---|
| +DI 上穿 −DI(全部) | 394,156 | +0.85% | 47.9% | −0.19% | −0.34% |
| 且 ADX > 25 | 60,907 | +1.01% | 48.9% | −0.29% | −0.44% |
| 且 ADX < 20 | 255,456 | +0.85% | 47.7% | −0.14% | −0.29% |

加了 ADX > 25 过滤,信号减少到原来的 15%,超额却从 −0.19% 变成 −0.29%。在「没有趋势」的 ADX < 20 里,反而是三组里最好的。
再试试给第 10 课的「收盘上穿 MA20」加 ADX 过滤:
| 规则 | 信号次数 | 20 天收益 | 20 天超额 |
|---|---|---|---|
| 上穿 MA20(全部) | 526,032 | +0.88% | −0.12% |
| 且 ADX > 25 | 165,686 | +0.91% | −0.07% |
| 且 ADX < 20 | 256,724 | +0.96% | −0.09% |
几乎没有变化。在 A 股个股上,ADX 过滤不能把跑输的信号变成跑赢。
三、青柠数据实验 2:高 ADX 意味着什么
把每天所有股票按 ADX 和方向分组,看之后 20 天的超额:
| ADX | 方向向上(+DI > −DI) | 方向向下(+DI < −DI) |
|---|---|---|
| 15 以下 | −0.05% | −0.14% |
| 15 ~ 20 | −0.09% | −0.02% |
| 20 ~ 25 | −0.25% | +0.11% |
| 25 ~ 30 | −0.23% | +0.31% |
| 30 ~ 40 | −0.27% | +0.71% |
| 40 以上 | −0.29% | +1.34% |
规律非常清楚:
- – 方向向上时,ADX 越高,之后越差。 强势上涨的股票之后跑输。
- – 方向向下时,ADX 越高,之后越好。 ADX > 40 且正在强烈下跌的股票,之后 20 天跑赢全市场 1.34%。
这又是第三章「追强跑输、买弱跑赢」的规律:ADX 很高时,往往是一段趋势已经走到末端,接下来更可能反转,而不是延续。
四、分年份和牛熊
+DI 上穿 −DI 每年的 20 天超额:
| 年份 | 信号次数 | 20 天收益 | 胜率 | 20 天超额 |
|---|---|---|---|---|
| 2016 | 21,727 | +1.76% | 55.0% | −0.08% |
| 2017 | 22,974 | −0.93% | 43.4% | −0.19% |
| 2018 | 29,295 | −3.45% | 33.0% | −0.34% |
| 2019 | 31,897 | +2.48% | 52.5% | −0.12% |
| 2020 | 33,114 | +1.21% | 47.1% | +0.21% |
| 2021 | 38,012 | +2.12% | 51.8% | +0.14% |
| 2022 | 41,141 | +0.14% | 47.6% | −0.17% |
| 2023 | 46,962 | −0.19% | 45.2% | −0.17% |
| 2024 | 42,699 | +1.65% | 45.2% | −0.41% |
| 2025 | 47,821 | +3.61% | 59.0% | −0.15% |
| 2026 | 38,514 | −0.74% | 42.7% | −0.79% |
| 市况 | 信号次数 | 20 天收益 | 20 天超额 |
|---|---|---|---|
| 牛市 | 208,330 | +0.50% | −0.14% |
| 熊市 | 185,826 | +1.25% | −0.25% |
11 年里只有 2020、2021 两年为正。
五、青柠数据实验 3:用 ADX 判断大盘
沪深 300 指数上,每次换仓扣 0.075%:
| 做法 | 总收益 | 年化 | 最大回撤 | 换仓次数 |
|---|---|---|---|---|
| 买入持有 | +14.18% | +1.24% | −45.60% | 1 |
| +DI > −DI 持有 | +33.59% | +2.72% | −20.99% | 228 |
| +DI > −DI 且 ADX > 20 持有 | +48.26% | +3.72% | −18.91% | 118 |
这次 ADX 过滤起了作用:只看方向就已经跑赢买入持有一倍多;再加上「ADX > 20」,换仓次数减半,收益更高,最大回撤从 45.6% 降到 18.9%。
为什么个股上 ADX 没用、指数上有用?指数是几百只股票的平均,趋势更平滑持久,「有没有趋势」的判断更可靠;个股的 ADX 很高时,常常是暴涨暴跌之后,接下来更容易反转。
和前几课一样要提醒:这 10 年沪深 300 有一段三年半的下跌,择时规则躲过了大部分,这个结果不能简单外推。
六、常见误区
「ADX 高说明趋势强,该顺势追」
个股上方向向上且 ADX > 40,之后 20 天跑输 0.29%。
「加 ADX > 25 过滤,能去掉震荡市里的假信号」
个股上过滤后反而更差。指数上有效,但阈值 20 已经够用。
「ADX 可以判断涨跌」
ADX 不分方向,下跌趋势里 ADX 一样会升高。方向要看 +DI 和 −DI。
在青柠中实操
- 1. 量化策略 → + 新建策略,在 指标 → 趋势 里拖入 平均趋向指标(ADX),周期 14。
- 2. 用 金叉/上穿,快线选 +DI、慢线选 -DI。
- 3. 再加一条 数值比较:ADX > 20。
- 4. 用 全部满足 (AND) 连起来接 入场信号;用 死叉/下穿(+DI 下穿 −DI)接 离场信号。
- 5. 先对沪深 300 相关标的回测,再用 批量回测 跑个股,对比两者的差别。
更多策略可以在青柠策略市场查看。下一课(第 20 课)讲 SAR 抛物线:自带移动止损的指标。
常见问题
ADX 和 DMI 有什么区别?
DMI 是整套指标(+DI、−DI、ADX),ADX 是其中衡量强度的那条线。青柠里两者计算相同。
ADX 阈值用 20 还是 25?
教材常用 25。本课在沪深 300 上用 20 已经效果明显;个股上两种阈值都没用。
为什么 ADX 这么慢?
它经过两次平滑:先平滑 +DI、−DI,再平滑它们的差距。所以 ADX 拐头通常比价格晚很多。
口径说明
股票池为全 A 股,排除 ST(按当前名称)和北交所,剔除未复权收盘价低于 3 元的股票,价格后复权;区间 2016-01-04 至 2026-10-13,共 4,974 只股票、2,615 个交易日。+DI、−DI、ADX 按 Wilder 平滑(系数 1/14),个股在数据库中截断到最近 70 根 K 线递归计算,与教科书算法相比 ADX 中位相对误差约 0.47%;沪深 300 使用完整的教科书算法。金叉定义为前一日 +DI 不高于 −DI、当日 +DI 高于 −DI。信号日收盘确认,次日开盘买入,持有至第 20 个交易日收盘;次日一字涨停剔除。ADX 分组为每个股票日按当日状态归组。超额收益 = 信号股票收益 − 同日股票池全部股票同口径平均。牛熊按沪深 300 收盘相对其 250 日均线划分。沪深 300 使用指数日线(000300.SH,价格指数,不含分红),每次换仓扣 0.075%。2026 年为不完整年度。数据由青柠量化回测数据库计算。历史统计不代表未来表现,不构成投资建议。
读到这里,不如自己验证一次
文章里的逻辑,你可以在青柠量化里用真实数据重新跑一遍。免费,零代码。