3. 技术指标入门:移动平均线(MA)的计算与信号生成

移动平均线,圈内人常叫它「均线」。这玩意儿可以说是技术分析里最基础、也最实用的工具了。我刚开始做量化那会儿,第一个上手的指标就是它。说白了,均线就是给价格序列「做平滑」,把那些短期的噪音过滤掉,让你看清趋势的方向。

3.1 什么是移动平均线?

你想想看,每天的收盘价上蹿下跳的,直接看K线图很容易被误导。均线的作用,就是取一段时间的平均值,让价格曲线变得平滑。比如5日均线,就是把最近5天的收盘价加起来除以5,每天算一个点,连成一条线。

我个人习惯把均线分为三类:

  • 短期均线(5日、10日):反应快,但容易假突破
  • 中期均线(20日、30日):趋势跟踪的常用选择
  • 长期均线(60日、120日):看大趋势,滞后性强

核心要点:均线的本质是「滞后指标」。它永远在价格之后给出信号。这不是缺点,而是特性——你要学会跟滞后性做朋友,而不是对抗它。

3.2 简单移动平均线(SMA)的计算

SMA是最原始的均线算法。公式很简单:

SMA = (P₁ + P₂ + ... + Pₙ) / n

其中P是收盘价,n是周期数。举个例子,计算5日SMA:

数据:收盘价 [10, 12, 11, 13, 14, 15, 16]
第5天的SMA = (10+12+11+13+14) / 5 = 12.0
第6天的SMA = (12+11+13+14+15) / 5 = 13.0
第7天的SMA = (11+13+14+15+16) / 5 = 13.8

嗯,这里要注意:SMA给每一天的权重是一样的。这意味着最老的数据和最新的数据「地位平等」。我在项目中遇到过一个问题——用SMA做短线交易时,信号总是慢半拍。后来才发现,问题出在权重分配上。

3.3 指数移动平均线(EMA)——我更喜欢这个

EMA解决了SMA的「等权」问题。它给近期的数据更高的权重,反应更快。计算公式稍微复杂一点:

EMA_today = (Price_today × α) + (EMA_yesterday × (1 - α))
其中 α = 2 / (n + 1)

比如10日EMA,α = 2 / (10 + 1) ≈ 0.1818。也就是说,今天的价格占18%的权重,昨天的EMA占82%。

我的建议:做短线交易,用EMA比SMA好。我自己的策略里,5日EMA和10日EMA是标配。中长线的话,SMA反而更稳定,不容易被短期波动带偏。

3.4 均线信号的生成逻辑

均线的信号生成,主要有三种玩法:

  1. 价格穿越均线:价格上穿均线做多,下穿做空
  2. 均线交叉:短期均线上穿长期均线(金叉)做多,下穿(死叉)做空
  3. 均线斜率:均线向上倾斜表示多头趋势,向下表示空头

我曾经踩过一个坑:单纯用金叉死叉做交易,结果在震荡行情里被来回打脸。后来加了「过滤条件」——比如要求价格在均线上方超过3天再确认信号,效果好了很多。

3.5 实战代码:从数据到信号

下面是一段Python代码,演示如何计算SMA和EMA,并生成交易信号:

import pandas as pd
import numpy as np

# 模拟价格数据
data = {
    'close': [10, 12, 11, 13, 14, 15, 16, 14, 13, 15, 
              17, 18, 16, 15, 17, 19, 20, 18, 17, 19]
}
df = pd.DataFrame(data)

# 计算SMA和EMA
df['SMA_5'] = df['close'].rolling(window=5).mean()
df['EMA_5'] = df['close'].ewm(span=5, adjust=False).mean()

# 生成信号:价格上穿SMA_5做多,下穿做空
df['signal'] = 0
df.loc[df['close'] > df['SMA_5'], 'signal'] = 1
df.loc[df['close'] < df['SMA_5'], 'signal'] = -1

# 找出信号变化点(穿越点)
df['position'] = df['signal'].diff()

print(df[['close', 'SMA_5', 'EMA_5', 'signal', 'position']])

避坑指南:我曾经直接用收盘价和均线比较来生成信号,结果回测收益很漂亮,实盘却亏得一塌糊涂。为什么?因为收盘价是「事后数据」。正确的做法是用开盘价或实时价格来判断穿越,或者至少做「次日开盘执行」的假设。

3.6 均线的参数选择

参数选多少?没有标准答案。我整理了一个常用参数表:

交易风格 常用均线 周期 特点
超短线 EMA 3、5、8 反应极快,噪音多
短线 EMA/SMA 10、20 平衡灵敏度与稳定性
中线 SMA 30、60 趋势跟踪效果好
长线 SMA 120、250 看大方向,滞后明显

我个人习惯用「斐波那契数列」来选参数:5、8、13、21、34。这些数字在市场中似乎有某种天然的契合感。当然,你也可以用优化算法去找最优参数,但小心过拟合。

3.7 均线系统的知识体系

下面这张图,是我梳理的均线系统核心逻辑。你看一眼就能明白整个框架:

移动平均线(MA)知识体系 移动平均线 MA 计算方式 信号生成 参数选择 SMA 等权 EMA 加权 价格穿越 均线交叉 短期 5/10 中期 20/60 核心思想:用历史数据的平滑值,预测未来趋势方向 滞后性是特性,不是缺陷——学会利用它 优点 简单直观、计算快 缺点 滞后、震荡市易亏损 适用场景 趋势行情、中长线

3.8 实战中的避坑指南

最后,分享几个我这些年踩过的坑:

  • 别在震荡市用均线——横盘行情里,均线信号基本是反向指标。我吃过这个亏,后来加了ATR指标做过滤。
  • 参数不是越优化越好——回测里表现最好的参数,实盘往往最差。我建议用「稳健参数区间」,而不是单一最优值。
  • 多周期配合使用——只看一条均线容易误判。我习惯同时看日线和小时线的均线,确认趋势共振再动手。

均线这东西,看似简单,但用好了能解决很多问题。记住一点:它不会告诉你未来涨还是跌,但它能告诉你「现在处于什么状态」。这就够了。


公众号:蓝海资料掘金营,微信 deep3321