MA、MACD、RSI等指标解析与量化策略实操
由bqu1vdra创建,最终由bqu1vdra 被浏览 4 用户
本文章是一篇关于经典技术指标解析与量化策略实操的干货文章\n在股市和量化交易中,MA(移动平均线)、EMA(指数均线)、MACD、RSI、KDJ、布林带 这六大指标是非常基础、常用的工具,但很多人只停留在“会看图”,而不了解它们的计算原理、信号逻辑以及实际应用场景
本文将带你系统梳理每一个指标:
- 计算公式:让你真正明白指标背后的数学逻辑
- 信号含义:掌握买卖信号及趋势判断方法
- 量化策略应用:用指标构建策略,并通过案例演示如何回测
在文章的最后,我还会分享一个多指标趋势追踪的示例,演示如何把指标思路转化为可执行的量化策略。不管你是技术分析初学者,还是想把指标应用到量化策略的朋友,都可以从中找到实用技巧
一、SMA/MA(简单移动平均)
指标定义
移动平均线(MA)是最基础的趋势类指标,用来 平滑价格波动,帮助交易者判断趋势方向。 它的核心思想是:过去 N 天的价格平均值,反映当前趋势水平
- 短期均线(如 MA5、MA10):反应价格短期变化
- 中期均线(如 MA20):反应趋势方向
- 长期均线(如 MA60、MA120):反映大趋势
示例:
假设某股票最近 5 天收盘价为:10、11、12、13、14 则 5 日均线:
MA5 = (10+11+12+13+14)/5= 12
如果第 6 天收盘价为 16,新的 MA5:
MA5 = (11+12+13+14+16)/5 = 13.2
可以看到,MA 会随着新价格移动而更新,所以叫 移动平均线
图形理解
在 K 线图上,均线是一条平滑曲线。 常见现象:
- 均线多头排列(短期>中期>长期) → 上涨趋势
- 均线死叉排列(短期<中期<长期) → 下跌趋势
短期均线交叉长期均线会形成金叉/死叉信号,这是均线策略的核心
交易信号
- 金叉:短期均线上穿长期均线 → 买入信号
- 死叉:短期均线下穿长期均线 → 卖出信号
- 均线多头/空头排列 → 趋势强弱判断
量化策略应用示例
趋势策略示例(伪代码):
# 短期均线 MA5
# 长期均线 MA20
if MA5 > MA20:
buy()
elif MA5 < MA20:
sell()
- 优点:简单、直观、容易实现
- 缺点:滞后明显,震荡市场容易产生假信号
因此,MA 常和其他指标(如 MACD、RSI)结合使用,以过滤震荡期假信号。
好的,接下来我会帮你写 EMA(指数移动平均线) 的小节,保持和 MA 小节一致的结构,方便阅读和理解。
二、EMA(指数移动平均线,Exponential Moving Average)
指标定义
EMA(Exponential Moving Average)是一种 加权移动平均线,相比 MA(简单移动平均线),它给 近期价格 更多的权重,更灵敏地反映价格变化,减少了 滞后性。
EMA 的核心思想是:越近期的价格越重要,通过指数加权的方式,提升了对最新价格变动的响应速度。
注意,第 1 天 EMA 可以直接用收盘价来代替,之后每一天的 EMA 会根据前一天的 EMA 和当日价格进行计算
图形理解
在 K 线图上,EMA 同样是一条平滑曲线,但它相比 MA 对价格波动的反应更快,因为它对最新的价格赋予了更大的权重。通常 EMA 曲线较 MA 更接近当前价格,震荡时波动更剧烈。
交易信号
- 金叉(买入信号):短期 EMA(如 5 日)上穿长期 EMA(如 20 日)。这说明短期上涨动能增强,适合入场。
- 死叉(卖出信号):短期 EMA 下穿长期 EMA。这是价格向下反转的信号,适合平仓或卖出。
- EMA 多头排列:短期 EMA > 中期 EMA > 长期 EMA,表示市场处于上涨趋势,动能持续增强。
量化策略应用示例
趋势策略示例(伪代码):
# 短期EMA和长期EMA
EMA5 = calculate_ema(close_prices, 5)
EMA20 = calculate_ema(close_prices, 20)
if EMA5 > EMA20:
buy() # 短期EMA上穿长期EMA,买入信号
elif EMA5 < EMA20:
sell() # 短期EMA下穿长期EMA,卖出信号
优点:反应灵敏,适合短期趋势交易。 缺点:依然可能出现 假信号,特别是在震荡市场。
EMA 与 MA 的对比
| 特性 | MA(移动平均线) | EMA(指数移动平均线) |
|---|---|---|
| 权重分配 | 均等给每个数据点 | 最新数据点权重更大 |
| 对市场变化反应 | 相对滞后 | 更加灵敏,迅速响应 |
| 使用场景 | 长期趋势判断 | 短期动量与波动分析 |
EMA 的 灵敏度 较高,所以在 快速变化的市场 中能更好地捕捉到趋势的变化,常用于 短线交易 和 动量策略。
好的,接下来我们继续写 MACD(移动平均收敛/发散指标) 的小节,保持和前面 MA 和 EMA 小节一致的风格,帮助读者全面理解 MACD 的定义、计算、交易信号和量化策略应用。
三、MACD(移动平均收敛/发散指标,Moving Average Convergence Divergence)
指标定义
MACD 是基于 EMA(指数移动平均线) 的衍生指标,用于衡量市场趋势的强度、方向以及转折点。MACD 通过计算 两条不同周期的 EMA 之间的差值,提供了一个非常有效的 趋势跟踪与动量分析工具。
- DIF(差离值):短期 EMA 与 长期 EMA 的差值
- DEA(信号线):DIF 的 9 日 EMA
- MACD(柱状图):DIF 与 DEA 的差值,用于显示动量变化。
MACD 的最大优势在于能够帮助交易者捕捉趋势变化的信号,尤其是在市场发生转折时,MACD 可以提前给出预警。
计算公式
- DIF = EMA(12) - EMA(26) DIF 是 MACD 的核心,表示短期趋势与长期趋势的差异。
- DEA = 9 日 DIF 的 EMA DEA 是一个平滑的信号线,帮助确认 DIF 变化的有效性。
- MACD = DIF - DEA MACD 也叫“柱状图”,表示 DIF 与 DEA 之间的差异。柱状图的高低反映了趋势的强度。
图形理解
在 K 线图上,MACD 通常由两部分组成:
- DIF 线:反映短期与长期趋势的差距
- DEA 线:反映 DIF 的平滑趋势
- 柱状图:表示 DIF 与 DEA 之间的差距,柱状图的高度代表趋势的强度。
通常,DIF 线与 DEA 线的交叉(金叉/死叉)被用作买卖信号,而柱状图的高度与方向则显示动量的强弱
交易信号
- 金叉(买入信号): 当 DIF 上穿 DEA 时,表示短期动量增强,市场可能进入上涨趋势,是一个买入信号。
- 死叉(卖出信号): 当 DIF 下穿 DEA 时,表示短期动量减弱,市场可能进入下跌趋势,是一个卖出信号。
- 柱状图增大: 如果柱状图变大,说明动量在增强,市场趋势可能在加速。 如果柱状图变小,说明动量在减弱,市场趋势可能在放缓。
- 零轴穿越:
- DIF > 0:表示当前市场处于上涨趋势
- DIF < 0:表示当前市场处于下跌趋势
量化策略应用示例
趋势跟踪策略示例(伪代码):
# MACD 策略
DIF = calculate_ema(close_prices, 12) - calculate_ema(close_prices, 26)
DEA = calculate_ema(DIF, 9)
# 金叉买入
if DIF > DEA:
buy()
# 死叉卖出
elif DIF < DEA:
sell()
优点:
结合 EMA 的特点,MACD 对市场的变化反应更灵敏,适合中短期趋势交易。
通过金叉/死叉以及柱状图变化,能够帮助交易者 及时捕捉趋势转折点。
缺点:
在震荡市场中,MACD 可能出现较多的假信号。
当市场没有明显趋势时,MACD 的信号较为频繁,可能会导致过度交易。
MACD 与 EMA 对比
| 特性 | EMA(指数移动平均线) | MACD(移动平均收敛/发散指标) |
|---|---|---|
| 计算方式 | 单纯的加权平均 | 基于 EMA 的差值与信号线 |
| 反应灵敏度 | 对价格的反应较为灵敏 | 可以同时衡量趋势强度与动量 |
| 主要用途 | 趋势判断 | 趋势与动量的综合分析 |
| 信号形式 | 交叉信号(如金叉、死叉) | 交叉信号、柱状图增减 |
MACD 相比 EMA 更加 多维度,不仅提供了 趋势的方向,还可以衡量 趋势的强度和动量变化,使得交易者在判断市场趋势时更加精准。
策略优化与组合应用
MACD 常常与其他指标(如 RSI、布林带)结合使用,形成强力的 趋势+动量确认 策略:
-
MACD + RSI: 在 MACD 出现金叉时,结合 RSI 判断市场是否超买或超卖,进一步确认买入/卖出信号。 示例:
if MACD_gold_cross and RSI < 70: buy() -
MACD + 布林带: 当价格突破布林带的上轨或下轨,结合 MACD 金叉或死叉信号,确认趋势的反转或延续。
好的,接下来我们继续写 RSI(相对强弱指数) 的小节,保持与之前 MA、EMA、MACD 一致的风格,帮助读者深入理解 RSI 的定义、计算、信号以及应用。
四、RSI(相对强弱指数,Relative Strength Index)
指标定义
RSI 是一种动量指标,主要用来衡量市场超买或超卖的情况,帮助交易者判断价格是否处于极端水平,从而预测可能的反转点。
- 超买:当 RSI 值超过 70,表示市场可能过度买入,价格上涨过快,存在回调风险。
- 超卖:当 RSI 值低于 30,表示市场可能过度卖出,价格下跌过快,存在反弹的潜力。
RSI 的计算通过一段时间内的上涨与下跌幅度 的比值来得出,从而判断市场的“强弱”。
计算公式
RSI 的计算公式如下:
其中:
- RS(相对强度)是平均上涨幅度与平均下跌幅度之比: RS = 平均上涨幅度/平均下跌幅度
- RSI 的周期通常为 14 天,可以根据不同需求调整。
举个例子:
假设我们计算过去 14 天的 RS,假设平均上涨幅度为 1.2,平均下跌幅度为 0.8,则:
RS = 1.2/0.8 = 1.5
那么 RSI 就是:
RSI = 100 -100/(1 + 1.5) = 60
图形理解
RSI 的值一般在 0 到 100 之间波动,通常绘制在一个独立的 振荡器 区域,形成类似于:
100 |-------------------------------------|
| ___ |
RSI | __/ \__ |
| / \ |
70 | -------------|---|---|--------|---|-----------------> 超买
| | | | | |
30 | -------------|---|---|--------|---|-----------------> 超卖
| | | | | |
0 |-------------------------------------|
- RSI 超过 70 表示市场 超买,价格有可能回调;
- RSI 低于 30 表示市场 超卖,价格有可能反弹。
交易信号
- 超买/超卖:
- RSI > 70 → 超买,市场可能会回调;
- RSI < 30 → 超卖,市场可能会反弹。
- RSI 金叉与死叉:
- RSI 从下向上突破 30 → 超卖区域的反弹,可能是一个买入信号。
- RSI 从上向下突破 70 → 超买区域的回调,可能是一个卖出信号。
- 背离:
- 价格创新高,但 RSI 不创新高,说明多头动能减弱,可能发生趋势反转。
- 价格创新低,但 RSI 不创新低,说明空头动能减弱,可能发生趋势反转。
量化策略应用示例
超买/超卖策略示例(伪代码):
# 计算 RSI
RSI = calculate_rsi(close_prices, 14)
# 超卖买入信号
if RSI < 30:
buy()
# 超买卖出信号
elif RSI > 70:
sell()
RSI 背离策略示例(伪代码):
# 价格创新低,RSI 未创新低,可能是反转信号
if price_low > prev_price_low and RSI_low < prev_RSI_low:
buy()
RSI 与其他指标的组合应用
RSI 是一个很好的 动量指标,通常与趋势指标(如 MACD、均线)结合使用,形成更强的买卖信号确认。
- RSI + MACD: 在 RSI 超买 并且 MACD 出现死叉 时,可以确认市场即将回调;在 RSI 超卖 并且 MACD 出现金叉 时,可以确认市场即将反弹
- RSI + 布林带: 在价格突破 布林带上轨 的同时,如果 RSI 超过 70,则可以确认市场处于 超买状态,可能会面临回调
- RSI + 均线: 在均线多头排列的情况下,如果 RSI 降到 30 以下,则可以尝试逢低买入
太好了,既然你已经理解了 RSI 的计算和背离,现在我们继续讲解下一个指标 —— KDJ(随机指标)。
五、KDJ(随机指标,Stochastic Oscillator)
指标定义
KDJ 指标是一种动量指标,用于衡量市场的超买超卖状态,并帮助交易者判断价格的转折点。它基于随机指标(Stochastic Oscillator),通过三个线来表示市场的超买超卖情况,分别是 K 线、D 线 和 J 线。
- K 线:表示 快速线,通常是基于最近的 14 天数据计算。
- D 线:表示 慢速线,通常是 K 线的 3 日平滑值。
- J 线:是 K 线与 D 线的差异放大,通常用于提前识别反转信号。
KDJ 用来衡量市场的 趋势强度和动量,并且能提供买卖信号,帮助交易者决定何时进入市场。
计算公式
交易信号
- 金叉和死叉:
- 金叉(买入信号):当 K 线 向上穿越 D 线 时,说明市场动能开始增强,可能是一个买入信号。
- 死叉(卖出信号):当 K 线 向下穿越 D 线 时,说明市场动能减弱,可能是一个卖出信号。
- J 线超买/超卖:
- J 线 > 100:市场可能处于 超买 状态,可能会出现回调,适合卖出。
- J 线 < 0:市场可能处于 超卖 状态,可能会反弹,适合买入。
- 背离:
- 与 RSI 一样,KDJ 也可以形成 背离。当价格创新高,而 KDJ 没有同步创新高时,可能是市场强势上涨乏力的信号;当价格创新低,而 KDJ 没有同步创新低时,可能是市场下跌乏力的信号。
量化策略应用示例
KDJ 指标在量化策略中,通常与其他指标一起使用。以下是一个基本的 KDJ 金叉死叉策略:
# 假设我们已经有 K, D, J 线的数据
# KDJ 金叉买入信号
if K > D: # K 线上穿 D 线
buy()
# KDJ 死叉卖出信号
elif K < D: # K 线下穿 D 线
sell()
优点:
- KDJ 非常适合用于 短期趋势交易,能够帮助识别价格反转点。
- 通过金叉和死叉信号,能够帮助交易者及时入场和出场。
缺点:
- 在震荡市场中,KDJ 信号可能会过于频繁,产生假信号。
- 需要结合其他指标(如 RSI、MACD)使用,减少假信号的出现。
总结
- KDJ 是一个 动量指标,主要通过三条线来表示市场的 超买超卖状态 和 反转信号。
- 主要信号:金叉、死叉、J 线超买超卖。
- KDJ 能够较好地捕捉短期的 趋势变化,尤其在 震荡市场 和 反转行情 中,发挥重要作用。
好的,接下来我们来详细讲解 布林带(Bollinger Bands),这也是一个非常流行的技术分析工具,用于衡量价格波动性并帮助判断 超买超卖 状况。
六、布林带
布林带主要用于衡量市场的 波动性。布林带由三条线组成:
- 中轨线(Middle Band):一般为 20日简单移动平均线(SMA),即当前价格的平均水平。
- 上轨线(Upper Band):中轨线加上一个倍数的 标准差。
- 下轨线(Lower Band):中轨线减去一个倍数的 标准差。
布林带的宽度会根据市场的波动性变化而变化:波动性越大,带宽越宽;波动性越小,带宽越窄。
解释
- 中轨线:中轨线表示价格的趋势方向,它是基于过去一段时间(通常是 20 天)的 简单移动平均线。中轨线可以帮助我们判断市场的 均衡水平。
- 上轨线:上轨线表示市场的 上方边界,如果价格突破上轨线,意味着市场可能进入 超买状态。
- 下轨线:下轨线表示市场的 下方边界,如果价格突破下轨线,意味着市场可能进入 超卖状态。
标准差:
布林带的关键特性之一是它是基于 标准差 来调整带宽的。标准差用于衡量价格波动的 幅度,波动性大时,带宽宽;波动性小的时候,带宽窄。标准差大表示价格大幅波动,标准差小表示价格波动较小。
布林带的信号
-
价格突破上轨或下轨:
- 突破上轨:当价格突破布林带的 上轨 时,通常意味着市场处于 超买 状态,可能出现回调。此时,可以考虑 卖出。
- 突破下轨:当价格突破布林带的 下轨 时,通常意味着市场处于 超卖 状态,可能会出现反弹。此时,可以考虑 买入。
注意:价格突破布林带上轨或下轨只是一个初步信号,并不一定意味着趋势马上反转。突破之后,可能会继续沿着当前趋势运行。需要结合其他指标进行确认。
-
布林带收窄(布林带压缩):
- 布林带的 带宽收窄,即上下轨的距离变小,表示市场的波动性变小,可能即将发生 剧烈波动。
- 布林带收窄通常是 大行情前的预兆,市场可能会有大幅波动,价格可能会突破上下轨中的一条线,启动新的趋势。
-
布林带扩张:
- 布林带扩张,即上下轨的距离变宽,表示市场的波动性增大。波动性增加通常伴随着趋势的 加速,价格可能会沿着当前的趋势继续走下去。
-
双底 / 双顶(布林带反转信号):
- 当价格达到下轨后未能进一步下跌,反而回升并突破中轨线时,通常是 反转 信号。
- 类似的,当价格达到上轨后未能继续上涨并回落时,也可以视为一个 反转信号。
布林带与其他指标结合使用
布林带虽然有很强的参考价值,但也有一些局限性,比如在震荡市场中容易产生假信号。为了提高交易的准确性,通常会将布林带与其他技术指标结合使用:
- 布林带 + RSI:
- 当 RSI 进入超买(>70)或超卖(<30)区,且价格突破 布林带的上轨 或 下轨,可以考虑进行反转交易。
- 例如,当价格突破 上轨,且 RSI 也显示超买时,可以认为是卖出信号。
- 布林带 + MACD:
- 在布林带的突破信号基础上,结合 MACD 的金叉死叉信号,能帮助确认买卖时机。
- 例如,当价格突破布林带上轨并且 MACD 出现金叉时,可以认为是一个强烈的买入信号。
多指标趋势追踪策略示例:
目前,Cowork是非常强大的工具,借用Cowork,小白也完全可以独立实现策略开发,本策略就是完全利用Cowork开发的。
该策略是一套多指标趋势跟踪日频量化策略,股票池为沪深300与中证500成分股。策略分两层过滤:第一层为市场择时,通过统计沪深300成分股的20日与60日动量多头比例(分别需≥50%和≥35%),判断整体市场处于多头环境时才允许建仓,否则空仓规避系统性风险;第二层为个股选股,要求同时满足四个技术条件:EMA20>EMA60(均线多头排列)、MACD金叉且柱状图为正(动能向上)、RSI(14)处于40~72健康区间、收盘价高于布林带中轨(价格在强势区域)。通过MACD柱(40%)、20日动量(35%)、RSI(25%)综合打分,每期选取排名最靠前的10只股票等权持有(每只10%仓位),每5个交易日调仓一次。风险控制采用止损-10%、止盈+25%、最大持有45天的三重退出机制。
https://bigquant.com/codesharev3/6a04550c-6bd0-4822-88a3-50ebf2c451ff
\