4. 技术指标计算:移动平均线(MA)、相对强弱指数(RSI)、布林带(Bollinger Bands)、MACD

技术指标,说白了就是给K线图装上「仪表盘」。没有指标,你只能凭感觉看价格涨跌。有了指标,你就能看到趋势的力度、超买超卖的状态、以及波动率的收缩与扩张。

我个人习惯,在实盘策略里不会堆砌太多指标。两三个核心指标组合,往往比七八个指标混在一起更有效。今天咱们就把四个最经典的指标讲透——MA、RSI、布林带、MACD。

核心观点:技术指标不是预测未来的水晶球,而是描述当前市场状态的「温度计」。理解指标背后的数学逻辑,比死记硬背参数更重要。

技术指标知识体系 技术指标计算 移动平均线 (MA) 趋势方向 + 支撑阻力 相对强弱指数 (RSI) 超买超卖 + 背离 布林带 (BB) 波动率 + 价格通道 MACD 趋势强度 + 信号线交叉 四个指标分别从趋势、动量、波动率三个维度描述市场

4.1 移动平均线(MA)—— 趋势的「平滑器」

移动平均线是最基础的指标,没有之一。它的作用就一个:把价格数据中的「噪音」过滤掉,让你看清真正的趋势方向。

我记得刚入行时,有个老交易员跟我说:「别看那些花里胡哨的指标,把两根均线玩明白,就能跑赢80%的人。」当时我不信,后来踩了不少坑才明白——这话有道理。

4.1.1 简单移动平均线(SMA)

SMA就是把过去N天的收盘价加起来,除以N。公式很简单:

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

举个例子,5日SMA就是最近5天收盘价的平均值。每天滚动计算,就形成了一条平滑的曲线。

4.1.2 指数移动平均线(EMA)

EMA和SMA的区别在于——EMA给近期的价格更高的权重。说白了,EMA对价格变化更「敏感」。

EMA = 今日收盘价 × α + 昨日EMA × (1 - α)
其中 α = 2 / (N + 1)

我个人习惯在策略里用EMA而不是SMA。为什么?因为EMA反应更快,在趋势行情里能更早给出信号。当然,快也意味着假信号可能更多——这是个取舍问题。

实战建议:做短线策略用EMA(12, 26),做中长线用SMA(50, 200)。我在回测中发现,EMA在震荡行情里容易反复打脸,这时候SMA反而更稳。

4.2 相对强弱指数(RSI)—— 动量的「体温计」

RSI衡量的是价格变动的速度和幅度。取值范围0到100,一般认为:

  • RSI > 70:超买,可能回调
  • RSI < 30:超卖,可能反弹
  • RSI在30-70之间:正常波动区间

计算RSI的核心是「平均涨幅」和「平均跌幅」的比值:

RS = 平均涨幅 / 平均跌幅
RSI = 100 - (100 / (1 + RS))

这里有个坑——「平均」用的是指数移动平均,不是简单平均。我曾经在这个细节上吃过亏,回测结果和实盘对不上,查了半天才发现是平均方式搞错了。

避坑指南:RSI的默认周期是14。但不同的币种、不同的时间周期,最优参数可能完全不同。我曾经在BTC的15分钟图上用14周期RSI,信号频繁到没法用。后来改成21周期,效果好了很多。参数一定要根据你的策略和品种去调。

4.3 布林带(Bollinger Bands)—— 波动率的「呼吸带」

布林带由三条线组成:中轨(通常是20日SMA)、上轨(中轨 + 2倍标准差)、下轨(中轨 - 2倍标准差)。

你想想看,当价格触及上轨时,说明价格偏离均值较远,可能「过热」了。触及下轨时,说明价格「过冷」。但这里有个关键点——布林带告诉你的是「价格在什么位置」,而不是「价格一定会反转」。

中轨 = SMA(close, 20)
标准差 = std(close, 20)
上轨 = 中轨 + 2 × 标准差
下轨 = 中轨 - 2 × 标准差

布林带最妙的地方在于——带宽的变化反映了波动率的变化。带宽收窄,说明市场在「蓄力」,往往预示着即将出现大行情。带宽扩张,说明波动率在释放。

我的经验:布林带收窄到极致时,配合成交量放大,往往是一波趋势行情的起点。我在做ETH的30分钟策略时,就用这个逻辑抓过几次不错的突破行情。

4.4 MACD—— 趋势的「加速器」

MACD由三部分组成:快线(DIF)、慢线(DEA)、柱状图(MACD柱)。

计算逻辑其实不复杂:

  1. 计算快线:EMA(close, 12) - EMA(close, 26)
  2. 计算慢线:EMA(DIF, 9)
  3. 柱状图:DIF - DEA

说白了,MACD就是两条均线差值的再处理。快线上穿慢线是金叉,下穿是死叉。柱状图由负转正是多头力量增强,由正转负是空头力量增强。

嗯,这里要注意——MACD在震荡行情里会频繁金叉死叉,信号质量很差。我个人习惯只在趋势行情里用MACD,震荡行情里直接关掉这个指标。

进阶用法:MACD背离是很有价值的信号。价格创新低但MACD的底部在抬高——这叫底背离,往往是反转信号。我在2022年底的BTC周线图上看到过明显的底背离,后来确实走了一波反弹。

4.5 代码实现:用Python计算四个指标

下面是一个完整的实现,用pandas和numpy手写这四个指标。我建议你理解每一行代码的逻辑,而不是直接调ta-lib库——虽然ta-lib方便,但出了问题你都不知道错在哪。

import pandas as pd
import numpy as np

def calculate_ma(df, window=20, ma_type='sma'):
    """计算移动平均线"""
    if ma_type == 'sma':
        df['MA'] = df['close'].rolling(window=window).mean()
    elif ma_type == 'ema':
        df['MA'] = df['close'].ewm(span=window, adjust=False).mean()
    return df

def calculate_rsi(df, period=14):
    """计算相对强弱指数"""
    delta = df['close'].diff()
    gain = (delta.where(delta > 0, 0)).ewm(span=period, adjust=False).mean()
    loss = (-delta.where(delta < 0, 0)).ewm(span=period, adjust=False).mean()
    rs = gain / loss
    df['RSI'] = 100 - (100 / (1 + rs))
    return df

def calculate_bollinger(df, window=20, num_std=2):
    """计算布林带"""
    df['BB_MID'] = df['close'].rolling(window=window).mean()
    df['BB_STD'] = df['close'].rolling(window=window).std()
    df['BB_UPPER'] = df['BB_MID'] + num_std * df['BB_STD']
    df['BB_LOWER'] = df['BB_MID'] - num_std * df['BB_STD']
    return df

def calculate_macd(df, fast=12, slow=26, signal=9):
    """计算MACD"""
    df['EMA_FAST'] = df['close'].ewm(span=fast, adjust=False).mean()
    df['EMA_SLOW'] = df['close'].ewm(span=slow, adjust=False).mean()
    df['DIF'] = df['EMA_FAST'] - df['EMA_SLOW']
    df['DEA'] = df['DIF'].ewm(span=signal, adjust=False).mean()
    df['MACD'] = 2 * (df['DIF'] - df['DEA'])
    return df

# 使用示例
# df = pd.read_csv('btc_data.csv')
# df = calculate_ma(df, 20, 'ema')
# df = calculate_rsi(df, 14)
# df = calculate_bollinger(df, 20, 2)
# df = calculate_macd(df, 12, 26, 9)
# print(df.tail())

注意:计算指标时,前N行数据会变成NaN。比如计算20日MA,前19行都是空值。实盘策略里一定要处理好这个边界情况,否则策略会在启动阶段乱开单。我见过有人因为这个bug,策略一启动就全仓买入——那画面太美我不敢看。

4.6 指标组合的实战思路

单个指标都有局限性。我个人常用的组合方式:

策略类型 指标组合 核心逻辑
趋势跟踪 EMA + MACD EMA判断方向,MACD确认力度
震荡反转 RSI + 布林带 RSI超买超卖 + 布林带上下轨
突破交易 布林带 + MACD 布林带收窄后突破 + MACD金叉确认

你想想看,如果只用RSI,在强趋势行情里会一直处于超买状态,你不断做空就不断被打脸。但如果加上EMA过滤——只有价格在EMA之上才考虑做多,在EMA之下才考虑做空——效果会好很多。

指标是工具,不是圣杯。真正重要的是你如何理解市场、如何设计策略逻辑。把这些指标吃透了,你就能搭建出属于自己的交易系统。

专注资料整理