Pharos
TAMomentum

TA.ADX()

平均趋向指标 (Average Directional Movement Index)

衡量趋势强度的指标,不区分趋势方向,值域 0-100。

语法

python
TA.ADX(high, low, close, timeperiod=14)

参数

参数名类型必选默认值说明
highany-最高价数组
lowany-最低价数组
closeany-收盘价数组
timeperiodany-时间周期,默认 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("触及下轨,考虑买入")

注意事项

⚠️ 重要提醒

  1. 只看强度: ADX 不显示方向,需配合 +DI/-DI 使用
  2. 滞后性: ADX 是滞后指标,趋势形成后才能确认
  3. 震荡过滤: ADX < 20 时避免使用趋势策略
  4. 配合使用: 建议与方向性指标配合

相关指标

返回目录

← 返回动量指标目录