趋势识别技术:移动平均线、MACD与ADX

趋势识别,说白了就是判断市场现在到底在干嘛。是往上走?往下走?还是纯粹在瞎晃悠?

我做了这么多年量化,见过太多人一上来就搞复杂模型。其实没必要。三个经典指标就能解决大部分问题:MA、MACD、ADX。今天咱们一个一个说清楚。

趋势识别技术核心框架 趋势识别 移动平均线 (MA) 识别趋势方向 MACD 判断趋势动能 ADX 衡量趋势强度 三者结合使用:MA看方向 → MACD看动能 → ADX看强度 只有三者共振时,才是高胜率交易机会

一、移动平均线(MA)识别趋势

移动平均线是最基础的趋势识别工具。我个人习惯把它叫做「市场的平均成本线」。为什么?因为它算的就是过去N根K线的平均价格。

你想想看,如果价格在均线上方,说明当前价格高于近期平均成本——多头占优。反之亦然。

1. 单均线策略

最简单的用法:价格在均线上方做多,下方做空。但这里有个坑——均线参数怎么选?

常用参数参考:

  • MA20(20日均线):短期趋势,适合短线交易
  • MA60(60日均线):中期趋势,我一般用它做主方向
  • MA120(120日均线):长期趋势,牛熊分界线

我的经验:别死磕某个参数。不同品种、不同周期,最优参数都不一样。我一般先用MA20和MA60做双均线系统,效果比单均线稳定得多。

2. 双均线交叉策略

快线上穿慢线 → 金叉,做多。快线下穿慢线 → 死叉,做空。

嗯,这里要注意。均线交叉有个致命问题——震荡行情里会被反复打脸。我曾经在2018年用双均线做螺纹钢,一个月被来回扫了七八次,亏得我怀疑人生。

避坑指南:均线交叉策略一定要配合趋势过滤器。比如只在大周期均线向上时做金叉,向下时做死叉。别逆着大趋势做。

3. 代码示例:双均线策略

def ma_cross_strategy(df, fast=20, slow=60):
    """
    双均线交叉策略
    df: 包含收盘价的DataFrame
    fast: 快线周期
    slow: 慢线周期
    """
    df['MA_fast'] = df['close'].rolling(window=fast).mean()
    df['MA_slow'] = df['close'].rolling(window=slow).mean()
    
    # 生成信号
    df['signal'] = 0
    df.loc[df['MA_fast'] > df['MA_slow'], 'signal'] = 1
    df.loc[df['MA_fast'] < df['MA_slow'], 'signal'] = -1
    
    # 取信号变化点
    df['position'] = df['signal'].diff()
    
    return df

二、MACD指标识别趋势

MACD,全称是移动平均收敛发散指标。说白了,它就是均线系统的升级版。

MACD由三部分组成:DIF线(快线)、DEA线(慢线)、柱状线。我一般这么看:

  • DIF上穿DEA:金叉,做多信号
  • DIF下穿DEA:死叉,做空信号
  • 柱状线由负转正:多头动能增强
  • 柱状线由正转负:空头动能增强

1. 顶背离与底背离

这是MACD最值钱的地方。什么叫顶背离?价格创新高,但MACD的DIF线没创新高。这说明多头力量跟不上了,随时可能反转。

背离实战要点:

  • 顶背离出现后,等死叉确认再做空
  • 底背离出现后,等金叉确认再做多
  • 大周期背离比小周期更可靠

我记得有一次做比特币,日线级别出现顶背离,我当时没当回事。结果第二天直接暴跌15%。从那以后,我对背离信号再也不敢轻视。

2. 零轴的作用

MACD的零轴就是多空分界线。DIF在零轴上方,说明多头主导;在零轴下方,说明空头主导。

我建议你这样做:只做零轴上方的金叉,零轴下方的死叉。为什么?因为顺势交易胜率更高。你想想看,逆势做单,就算信号对了也赚不了几个钱。

3. 代码示例:MACD信号生成

def macd_signal(df, fast=12, slow=26, signal=9):
    """
    MACD信号生成
    """
    # 计算EMA
    df['EMA_fast'] = df['close'].ewm(span=fast).mean()
    df['EMA_slow'] = df['close'].ewm(span=slow).mean()
    
    # DIF线
    df['DIF'] = df['EMA_fast'] - df['EMA_slow']
    
    # DEA线
    df['DEA'] = df['DIF'].ewm(span=signal).mean()
    
    # 柱状线
    df['MACD_bar'] = 2 * (df['DIF'] - df['DEA'])
    
    # 信号
    df['signal'] = 0
    df.loc[(df['DIF'] > df['DEA']) & (df['DIF'].shift(1) <= df['DEA'].shift(1)), 'signal'] = 1
    df.loc[(df['DIF'] < df['DEA']) & (df['DIF'].shift(1) >= df['DEA'].shift(1)), 'signal'] = -1
    
    return df

三、ADX指标识别趋势强度

ADX,平均趋向指数。这个指标不告诉你方向,它只告诉你趋势有多强。

很多人只看MA和MACD,忽略了ADX。其实这是个很大的误区。你想想看,如果趋势很弱,你按照MA信号进场,结果行情横盘震荡,那不是白忙活?

1. ADX的数值含义

ADX数值 趋势强度 操作建议
0 - 25 弱趋势或无趋势 观望,不适合趋势策略
25 - 50 中等趋势 可以顺势交易
50 - 75 强趋势 积极跟进,但注意回调
75以上 极强趋势 趋势可能接近尾声,谨慎

我的习惯:ADX低于20时,我基本不做趋势策略。这时候市场在震荡,做趋势交易就是送钱。我会切换到震荡策略或者干脆空仓。

2. ADX与DI线的配合

ADX指标还包含+DI和-DI两条线。+DI向上说明多头力量增强,-DI向上说明空头力量增强。

当+DI在-DI上方,且ADX向上走 → 多头趋势在加强。这时候做多,胜率很高。

我曾经在2020年做黄金,ADX从18涨到35,+DI一直在-DI上方。我一路持有多单,赚了将近2000点。这就是趋势强度的威力。

3. 代码示例:ADX计算

def calculate_adx(df, period=14):
    """
    计算ADX指标
    """
    # 计算TR(真实波幅)
    df['H-L'] = df['high'] - df['low']
    df['H-PC'] = abs(df['high'] - df['close'].shift(1))
    df['L-PC'] = abs(df['low'] - df['close'].shift(1))
    df['TR'] = df[['H-L', 'H-PC', 'L-PC']].max(axis=1)
    
    # 计算方向变动
    df['up_move'] = df['high'] - df['high'].shift(1)
    df['down_move'] = df['low'].shift(1) - df['low']
    
    df['+DM'] = 0
    df['-DM'] = 0
    df.loc[(df['up_move'] > df['down_move']) & (df['up_move'] > 0), '+DM'] = df['up_move']
    df.loc[(df['down_move'] > df['up_move']) & (df['down_move'] > 0), '-DM'] = df['down_move']
    
    # 平滑处理
    df['+DI'] = 100 * (df['+DM'].rolling(window=period).mean() / df['TR'].rolling(window=period).mean())
    df['-DI'] = 100 * (df['-DM'].rolling(window=period).mean() / df['TR'].rolling(window=period).mean())
    
    # 计算DX和ADX
    df['DX'] = 100 * abs(df['+DI'] - df['-DI']) / (df['+DI'] + df['-DI'])
    df['ADX'] = df['DX'].rolling(window=period).mean()
    
    return df

四、三个指标如何配合使用

单独用任何一个指标,效果都有限。我一般这样组合:

  1. 先用MA判断大方向:价格在MA60上方,只做多;在下方,只做空
  2. 再用MACD找入场点:等金叉或死叉信号出现
  3. 最后用ADX确认强度:ADX大于25才进场

实战案例:

假设MA60向上,价格在均线上方。MACD出现金叉,ADX从20涨到30。这时候进场做多,止损设在MA60下方。我做过回测,这种三指标共振的策略,胜率能到65%以上。

注意:任何指标都有滞后性。MA和MACD都是基于历史数据计算的,它们无法预测未来。所以一定要配合资金管理,别因为信号好就重仓。

好了,趋势识别的三个核心工具就讲到这里。记住一句话:MA看方向,MACD看动能,ADX看强度。三者结合,才能做出高质量的交易决策。

专注资料整理