ADX(Average Directional Index,平均趋向指数)是由 J. Welles Wilder 提出的技术指标,用于衡量价格趋势的强弱,而非趋势的方向。它是趋势型交易者常用的重要指标,尤其是在量化和趋势策略中非常实用。
一、ADX组成
ADX 是基于 DMI(Directional Movement Index,趋向指标) 发展而来,包含三个部分:
- +DI(Positive Directional Indicator)
- −DI(Negative Directional Indicator)
- ADX(Average Directional Index)
二、计算步骤
假设使用 14日周期 计算:
Step 1:计算 TR(True Range,真实波动幅度)
TR = max(
当日最高价 - 当日最低价,
abs(当日最高价 - 前一日收盘价),
abs(当日最低价 - 前一日收盘价)
)
Step 2:计算 +DM 和 −DM
+DM = 当日最高价 - 前一日最高价(若为正,且大于前一日最低价 - 当日最低价,否则为0)
−DM = 前一日最低价 - 当日最低价(若为正,且大于当日最高价 - 前一日最高价,否则为0)
Step 3:平滑TR、+DM、−DM(使用Wilder’s 平滑方式)
例如14日:
TR14 = 前一日TR14 × 13/14 + 今日TR × 1/14
+DM14 = 前一日+DM14 × 13/14 + 今日+DM × 1/14
−DM14 = 同上
Step 4:计算 +DI 和 −DI
+DI = (+DM14 / TR14) × 100
−DI = (−DM14 / TR14) × 100
Step 5:计算 DX(Directional Index)
DX = (|+DI - −DI| / (+DI + −DI)) × 100
Step 6:计算 ADX
ADX = 前一日ADX × 13/14 + 今日DX × 1/14(14日)
三、指标解读
1. 趋势强度
- ADX > 25:表示市场处于强趋势中(不论方向)
- ADX < 20:表示市场无明显趋势,震荡为主
- ADX 上升:趋势增强(无论是上涨还是下跌)
- ADX 下降:趋势减弱或震荡开始
2. 趋势方向(由 +DI 和 −DI 判断)
- +DI > −DI:上涨趋势主导
- −DI > +DI:下跌趋势主导
- DI交叉点:可能是趋势转折信号
四、实战用法
1. 趋势确认
- 当 ADX > 25 且 +DI > −DI,可以考虑做多
- 当 ADX > 25 且 −DI > +DI,可以考虑做空
2. 趋势衰竭判断
- ADX 从高位下降,说明趋势可能即将结束
- ADX 和价格背离,可能出现反转
五、优缺点
优点 | 缺点 |
---|---|
不判断方向,仅判断趋势强度 | 不适用于震荡市场 |
适合搭配其他趋势判断指标 | 滞后性,确认趋势时价格已波动 |
适合量化策略中的趋势过滤器 | 参数选择(如14日)可能需调优 |
六、Python示例(用 ta
库计算ADX)
import pandas as pd
import ta
df = pd.read_csv('your_data.csv') # 包含 open, high, low, close
adx = ta.trend.ADXIndicator(df['high'], df['low'], df['close'], window=14)
df['ADX'] = adx.adx()
df['+DI'] = adx.adx_pos()
df['-DI'] = adx.adx_neg()