3. 技术指标基础:移动平均线(MA)、相对强弱指标(RSI)、布林带(Bollinger Bands)、MACD指标

做量化交易,说白了就是跟数字打交道。但裸K线太原始了,我们需要一些工具来帮我们看清趋势、判断强弱。今天聊的这四个指标,是我个人策略里最常用的组合。它们各有脾气,用好了是利器,用不好就是坑。

核心观点:技术指标不是预言,而是概率。它们帮你描述「现在发生了什么」,而不是「未来一定会怎样」。

3.1 移动平均线(MA)—— 趋势的骨架

移动平均线,就是把过去N天的收盘价做个平均,然后连成一条线。它平滑了价格波动,让你一眼看出大方向。

我常用的几种MA:

  • MA5 / MA10:短期均线,反应快,但假信号也多。适合做短线进出参考。
  • MA20 / MA30:中期均线,我习惯用它判断波段趋势。价格在MA20之上,偏多;之下,偏空。
  • MA60 / MA120:长期均线,牛熊分界线。价格站上MA60,我才会考虑中线持仓。

实战用法:

  • 金叉/死叉:短期均线上穿长期均线,叫金叉,看多;下穿叫死叉,看空。但注意,震荡市里金叉死叉频繁出现,容易来回打脸。
  • 均线斜率:我个人更看重均线的方向。MA20向上倾斜,说明短期趋势向上;走平,说明在盘整。

我的习惯:做趋势跟踪时,我会把MA20作为动态止损线。价格跌破MA20,减仓;反弹站不回,清仓。简单粗暴,但有效。

3.2 相对强弱指标(RSI)—— 超买超卖的体温计

RSI衡量的是过去一段时间内,价格上涨和下跌的力度对比。取值范围0-100。说白了,就是看市场情绪是不是过头了。

标准用法:

  • RSI > 70:超买区域,可能回调或反转。但强势行情里,RSI可以长时间在70以上。
  • RSI < 30:超卖区域,可能反弹。同样,单边下跌时RSI会趴在30以下很久。
  • RSI = 50:多空平衡点。在50以上运行,偏强;以下,偏弱。

我踩过的坑:

我曾经在RSI到80时直接做空,结果行情继续暴涨,差点爆仓。后来我明白了——RSI在趋势行情里会钝化。超买之后还有超买,超卖之后还有超卖。所以我现在用RSI,更多是看背离。

背离才是精髓:

  • 顶背离:价格创新高,但RSI没创新高。说明上涨动能衰竭,是卖出信号。
  • 底背离:价格创新低,但RSI没创新低。说明下跌动能减弱,是买入信号。

注意:背离信号在震荡行情里准确率很高,但在单边趋势里容易失效。一定要结合趋势判断。

3.3 布林带(Bollinger Bands)—— 价格的通道

布林带由三条线组成:中轨(通常是MA20)、上轨和下轨。上下轨的宽度由标准差决定。市场波动越大,布林带越宽;波动越小,布林带越窄。

核心逻辑:

  • 价格有95%的概率落在上下轨之间。碰到上轨,说明价格偏高;碰到下轨,说明价格偏低。
  • 布林带收窄:意味着波动率在降低,往往预示着即将出现大行情。方向不确定,但波动会放大。
  • 布林带开口:价格突破上轨或下轨,说明趋势在加速。这时候追涨杀跌,反而可能吃到主升浪。

我的用法:

我一般把布林带和RSI结合。比如价格打到下轨,同时RSI低于30,我会考虑做多。价格打到上轨,RSI高于70,我会考虑做空。但记住,布林带不是绝对的支撑阻力,它只是统计意义上的边界。

一个小技巧:布林带中轨(MA20)本身就是一个很好的趋势过滤器。价格在中轨之上,只做多;在中轨之下,只做空。能过滤掉很多震荡行情里的假信号。

3.4 MACD指标 —— 趋势的加速器

MACD由三部分组成:快线(DIF)、慢线(DEA)和柱状图(MACD柱)。它本质上是均线的衍生品,用来衡量短期和长期动能的差异。

怎么看MACD:

  • 快线上穿慢线:金叉,动能转强,看多。
  • 快线下穿慢线:死叉,动能转弱,看空。
  • 柱状图:红柱变长,说明多头动能增强;绿柱变长,说明空头动能增强。柱状图由红转绿,是趋势转折的信号。

零轴的意义:

  • MACD在零轴之上,说明市场处于多头格局。
  • MACD在零轴之下,说明市场处于空头格局。
  • 零轴附近的金叉,往往是趋势启动的信号,比高位金叉更可靠。

我个人的经验:

MACD的背离比金叉死叉更有价值。比如价格在涨,但MACD的柱状图高点越来越低,这就是顶背离,说明上涨力度在减弱。我一般看到日线级别的顶背离,会直接减仓甚至清仓。

总结一下这四个指标的分工:

  • MA:告诉你趋势的方向。
  • RSI:告诉你情绪是否极端。
  • 布林带:告诉你波动率的状态。
  • MACD:告诉你动能的强弱和转折。

它们不是孤立的。我习惯把MA20作为趋势过滤器,然后用RSI和布林带找入场点,用MACD确认动能。组合起来用,胜率会高很多。

3.5 指标组合框架图

下面这张图,是我自己整理的技术指标组合逻辑。你可以把它当作一个决策流程来用。

技术指标组合决策框架 第一步:趋势判断(MA) 价格在MA20之上?还是之下? 趋势向上(只考虑做多) 等待回调或突破信号 趋势向下(只考虑做空) 等待反弹或破位信号 入场信号确认 RSI超卖 + 布林带下轨支撑 或 MACD金叉 + 零轴附近 入场信号确认 RSI超买 + 布林带上轨压力 或 MACD死叉 + 零轴附近 执行交易 + 动态止损 止损设在MA20下方(做多)或上方(做空)

嗯,这张图其实是我自己策略的简化版。实际跑起来,还会加一些过滤条件和仓位管理。但核心逻辑就是这样——先定方向,再找信号,最后执行。

3.6 代码示例:计算四个指标

下面是一个简单的Python代码片段,用pandas计算这四个指标。你可以直接拿去用。

import pandas as pd
import numpy as np

def calculate_indicators(df):
    """
    df 必须包含 'close' 列
    返回添加了 MA, RSI, Bollinger, MACD 的 DataFrame
    """
    # 1. 移动平均线
    df['MA5'] = df['close'].rolling(window=5).mean()
    df['MA20'] = df['close'].rolling(window=20).mean()
    df['MA60'] = df['close'].rolling(window=60).mean()
    
    # 2. RSI (14日)
    delta = df['close'].diff()
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    avg_gain = gain.rolling(window=14).mean()
    avg_loss = loss.rolling(window=14).mean()
    rs = avg_gain / avg_loss
    df['RSI'] = 100 - (100 / (1 + rs))
    
    # 3. 布林带 (20日, 2倍标准差)
    df['BB_middle'] = df['close'].rolling(window=20).mean()
    std = df['close'].rolling(window=20).std()
    df['BB_upper'] = df['BB_middle'] + 2 * std
    df['BB_lower'] = df['BB_middle'] - 2 * std
    
    # 4. MACD (12, 26, 9)
    ema12 = df['close'].ewm(span=12, adjust=False).mean()
    ema26 = df['close'].ewm(span=26, adjust=False).mean()
    df['MACD_DIF'] = ema12 - ema26
    df['MACD_DEA'] = df['MACD_DIF'].ewm(span=9, adjust=False).mean()
    df['MACD_HIST'] = df['MACD_DIF'] - df['MACD_DEA']
    
    return df

注意:实际使用中,RSI和MACD的参数可以调整。比如短线交易,我会把RSI周期改成7,MACD改成(6, 13, 5)。参数没有绝对最优,要根据品种和周期去测试。

3.7 避坑指南

最后,分享几个我踩过的坑,希望能帮你少走弯路。

  • 不要过度优化参数:我曾经为了回测好看,把MA周期调成19、RSI调成13、布林带调成1.8倍标准差。结果实盘一跑,亏成狗。参数越通用,越稳健。
  • 指标不是越多越好:三个指标同时发出信号,胜率可能还不如一个靠谱的指标。我见过有人用七八个指标,结果信号互相矛盾,根本没法交易。
  • 注意时间周期:日线级别的金叉,在15分钟图上可能是个死叉。一定要明确你的交易周期,不要混用。
  • 指标会失效:市场环境变了,指标的有效性也会变。比如低波动率环境下,布林带的上下轨经常被突破。定期复盘,调整策略。

好了,技术指标这块就聊这么多。记住,指标是工具,不是圣杯。真正决定盈亏的,是你对市场的理解和对纪律的执行。


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