4. 均线交叉信号:金叉死叉的定义、单均线策略、双均线策略、三均线策略

均线交叉,这玩意儿在量化圈里被聊得最多,也最容易被误解。

很多人一上来就搞双均线金叉买入、死叉卖出,结果回测曲线漂亮得像假的一样,实盘一跑就崩。为什么?因为没搞懂均线交叉背后的逻辑。

我个人习惯把均线交叉分成三个层次来理解:定义、单均线、多均线。今天咱们一层层剥开。

4.1 金叉与死叉:最基础的定义

先说定义,简单到不能再简单:

  • 金叉:短期均线上穿长期均线。比如5日均线上穿20日均线。市场短期趋势转强,是买入信号。
  • 死叉:短期均线下穿长期均线。比如5日均线下穿20日均线。市场短期趋势转弱,是卖出信号。

但这里有个坑——均线参数怎么选?

我在项目中遇到过不少新手,上来就用(5, 20)或者(10, 30),觉得这是标准答案。其实不是。参数选择取决于你的持仓周期和品种波动率。

核心原则:参数越小,信号越灵敏,但假信号越多;参数越大,信号越滞后,但胜率相对更高。

我的经验:做日线级别的轮动策略,我常用(5, 20)作为基础组合。但如果是做小时线或者15分钟线,我会把参数调小,比如(3, 12)。

4.2 单均线策略:最简单的趋势跟踪

单均线策略,说白了就是一根均线走天下。

规则:

  • 价格上穿均线 → 买入
  • 价格下穿均线 → 卖出

听起来是不是比双均线还简单?但实际用起来,你会发现一个问题——震荡行情里被反复打脸

我记得有一次做股指期货的日内策略,用20周期均线做单均线跟踪。行情单边上涨时赚得盆满钵满,但一到横盘震荡,连续被左右打耳光,一周亏掉之前两周的利润。

为什么会这样?因为单均线策略本质上是一个滞后指标。它只能告诉你趋势已经发生了,不能预测趋势什么时候开始。

避坑指南:单均线策略只适合趋势明显的品种,比如股指、商品期货中的趋势性品种。震荡市里,千万别用单均线做主要信号。

代码实现也很简单:

# 单均线策略示例
import pandas as pd
import numpy as np

def single_ma_strategy(df, ma_period=20):
    df['MA'] = df['close'].rolling(window=ma_period).mean()
    df['signal'] = 0
    df.loc[df['close'] > df['MA'], 'signal'] = 1  # 买入信号
    df.loc[df['close'] < df['MA'], 'signal'] = -1 # 卖出信号
    return df

4.3 双均线策略:金叉死叉的经典应用

双均线策略,就是咱们开头说的金叉死叉。它比单均线多了一层过滤,能减少一部分假信号。

规则:

  • 短期均线上穿长期均线 → 金叉,买入
  • 短期均线下穿长期均线 → 死叉,卖出

但这里有个细节很多人忽略——金叉死叉的确认时机

我见过有人用收盘价确认,有人用盘中实时确认。我个人习惯用收盘价确认。为什么?因为盘中波动太大,很容易被瞬间的假突破骗进去。

实战技巧:金叉死叉信号出现后,不要立即下单。等下一根K线收盘确认,或者加一个百分比过滤(比如短期均线超过长期均线0.5%才算有效金叉)。

双均线策略的代码:

# 双均线策略示例
def dual_ma_strategy(df, short_period=5, long_period=20):
    df['MA_short'] = df['close'].rolling(window=short_period).mean()
    df['MA_long'] = df['close'].rolling(window=long_period).mean()
    
    df['signal'] = 0
    # 金叉信号
    df.loc[(df['MA_short'] > df['MA_long']) & 
           (df['MA_short'].shift(1) <= df['MA_long'].shift(1)), 'signal'] = 1
    # 死叉信号
    df.loc[(df['MA_short'] < df['MA_long']) & 
           (df['MA_short'].shift(1) >= df['MA_long'].shift(1)), 'signal'] = -1
    return df

4.4 三均线策略:更精细的趋势判断

三均线策略,说白了就是在双均线的基础上再加一根中期均线,用来判断趋势的强度。

常见的三均线组合:

  • 短期:5日或10日
  • 中期:20日或30日
  • 长期:60日或120日

三均线策略的核心逻辑:

  • 多头排列:短期 > 中期 > 长期 → 强势上涨趋势
  • 空头排列:短期 < 中期 < 长期 → 弱势下跌趋势
  • 交叉信号:短期上穿中期,且中期在长期之上 → 更可靠的金叉

我曾经用三均线策略做过一个ETF轮动组合。当时选了5只行业ETF,用(5, 20, 60)三均线判断趋势强度,只做多头排列的品种。效果比单纯的双均线好不少,尤其是在震荡市里,能过滤掉很多假突破。

我的建议:三均线策略更适合做趋势强度过滤,而不是直接作为买卖信号。你可以先用三均线判断大方向,再用双均线或单均线找具体入场点。

三均线策略的代码实现:

# 三均线策略示例
def triple_ma_strategy(df, short=5, mid=20, long=60):
    df['MA_short'] = df['close'].rolling(window=short).mean()
    df['MA_mid'] = df['close'].rolling(window=mid).mean()
    df['MA_long'] = df['close'].rolling(window=long).mean()
    
    # 判断排列状态
    df['bullish'] = (df['MA_short'] > df['MA_mid']) & (df['MA_mid'] > df['MA_long'])
    df['bearish'] = (df['MA_short'] < df['MA_mid']) & (df['MA_mid'] < df['MA_long'])
    
    # 只在多头排列时做多
    df['signal'] = 0
    df.loc[df['bullish'], 'signal'] = 1
    df.loc[df['bearish'], 'signal'] = -1
    return df

4.5 三种策略的对比与选择

说了这么多,到底该用哪种?

我整理了一个对比表,方便你快速决策:

策略类型 优点 缺点 适用场景
单均线 简单直观,参数少 震荡市假信号多 强趋势行情
双均线 过滤部分假信号 滞后性依然存在 中等趋势行情
三均线 趋势判断更精细 参数多,过拟合风险大 震荡市+趋势市混合

重要提醒:均线交叉策略最大的问题不是参数选择,而是滞后性。你永远无法在最低点买入、最高点卖出。接受这个事实,你才能用好均线。

4.6 均线交叉策略的核心逻辑图

下面这张图,是我自己总结的均线交叉策略决策流程。你想想看,从原始价格数据到最终买卖信号,中间经历了哪些步骤:

均线交叉策略核心逻辑图 原始价格数据 计算均线(单/双/三均线) 判断金叉/死叉/排列状态 金叉/多头排列 → 买入 死叉/空头排列 → 卖出 输出买卖信号 → 执行轮动调仓

这张图的核心逻辑其实就一句话:从价格到均线,从均线到交叉,从交叉到信号。每一步都在做信息过滤和趋势确认。

嗯,关于均线交叉的内容,今天就聊到这儿。记住一点:均线是工具,不是圣杯。再好的策略,也要结合仓位管理和风险控制才能长期赚钱。

最后一句:我见过太多人把均线交叉当成万能钥匙,结果亏得怀疑人生。别犯同样的错误。把均线当成趋势判断的辅助工具,而不是唯一的决策依据。

蓝海数据掘金营,专注资料整理