TAMomentum
TA.ADX()
平均趋向指标 (Average Directional Movement Index)
衡量趋势强度的指标,不区分趋势方向,值域 0-100。
语法
python
TA.ADX(high, low, close, timeperiod=14)参数
| 参数名 | 类型 | 必选 | 默认值 | 说明 |
|---|---|---|---|---|
| high | any | 否 | - | 最高价数组 |
| low | any | 否 | - | 最低价数组 |
| close | any | 否 | - | 收盘价数组 |
| timeperiod | any | 否 | - | 时间周期,默认 14 |
返回值
返回 ADX 值数组,范围 0-100
解读
- ADX > 25: 强趋势(上涨或下跌)
- ADX < 20: 弱趋势或震荡
- ADX 上升: 趋势增强
- ADX 下降: 趋势减弱
⚠️ 注意: ADX 只表示趋势强度,不表示方向
基础示例
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
adx = TA.ADX(highs, lows, closes, 14)
Log(f"ADX: {adx[-1]:.2f}")
if adx[-1] > 25:
Log("强趋势,ADX:", adx[-1])
elif adx[-1] < 20:
Log("弱趋势或震荡,ADX:", adx[-1])
else:
Log("中等趋势,ADX:", adx[-1])高级应用
1. ADX 趋势强度分级
python
def get_trend_strength(adx_value):
"""ADX 趋势强度分级"""
if adx_value < 20:
return "无趋势/震荡"
elif adx_value < 25:
return "弱趋势"
elif adx_value < 50:
return "强趋势"
elif adx_value < 75:
return "极强趋势"
else:
return "超强趋势"
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
adx = TA.ADX(highs, lows, closes, 14)
strength = get_trend_strength(adx[-1])
Log(f"当前趋势强度: {strength} (ADX={adx[-1]:.2f})")2. ADX 配合方向指标
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
adx = TA.ADX(highs, lows, closes, 14)
plus_di = TA.PLUS_DI(highs, lows, closes, 14)
minus_di = TA.MINUS_DI(highs, lows, closes, 14)
# 强趋势 + 方向判断
if adx[-1] > 25:
if plus_di[-1] > minus_di[-1]:
Log(f"强势上涨趋势 (ADX={adx[-1]:.2f})")
else:
Log(f"强势下跌趋势 (ADX={adx[-1]:.2f})")
elif adx[-1] < 20:
Log("震荡行情,不适合趋势策略")3. ADX 突破策略
python
def main():
records = exchange.GetRecords()
highs = [r['High'] for r in records]
lows = [r['Low'] for r in records]
closes = [r['Close'] for r in records]
adx = TA.ADX(highs, lows, closes, 14)
# ADX 突破 25(趋势形成)
if adx[-1] > 25 and adx[-2] <= 25:
Log("ADX 突破 25,趋势开始形成")
# ADX 跌破 20(趋势结束)
elif adx[-1] < 20 and adx[-2] >= 20:
Log("ADX 跌破 20,趋势可能结束")参数优化建议
| 周期 | 推荐参数 | 特点 |
|---|---|---|
| 短线 | ADX(10) | 快速反应 |
| 标准 | ADX(14) | 经典配置 |
| 长线 | ADX(20) | 更平滑 |
与其他指标配合
ADX + MACD
python
adx = TA.ADX(highs, lows, closes, 14)
macd, signal, hist = TA.MACD(closes, 12, 26, 9)
# 强趋势 + MACD 金叉
if adx[-1] > 25 and macd[-1] > signal[-1]:
Log("强趋势环境下的MACD金叉")ADX + BOLL
python
adx = TA.ADX(highs, lows, closes, 14)
upper, middle, lower = TA.BOLL(closes, 20, 2)
# 震荡行情使用布林带
if adx[-1] < 20:
Log("弱趋势,使用布林带策略")
if closes[-1] <= lower[-1]:
Log("触及下轨,考虑买入")注意事项
⚠️ 重要提醒:
- 只看强度: ADX 不显示方向,需配合 +DI/-DI 使用
- 滞后性: ADX 是滞后指标,趋势形成后才能确认
- 震荡过滤: ADX < 20 时避免使用趋势策略
- 配合使用: 建议与方向性指标配合
相关指标
- PLUS_DI - 正向指标 - 上升动向
- MINUS_DI - 负向指标 - 下降动向
- AROON - 阿隆指标 - 另一种趋势强度指标