Macd分析(不定时更新)
展开

MACD(Moving Average Convergence Divergence,指数平滑异同移动平均线)是技术分析中最常用的趋势跟踪和动量指标之一,由杰拉德·阿佩尔于1979年发明。
一、MACD的构成与计算
MACD由三个核心部分组成:
1. DIF线(快线):短期EMA(通常12日)与长期EMA(通常26日)的差值,反映短期与长期趋势的差异。
2. DEA线(慢线):DIF线的9日EMA,对DIF进行平滑处理,过滤短期噪音。
3. MACD柱状线:2×(DIF-DEA),直观显示多空动量强弱。红柱(DIF>DEA)表示多头占优,绿柱(DIF0):多头市场,短期趋势强于长期。
• 零轴下方(DIF、DEA均<0):空头市场,短期趋势弱于长期。
• 穿越零轴:DIF从下向上穿越零轴(由负转正)为多头趋势确立信号;从上向下穿越零轴(由正转负)为空头趋势确立信号。
2. 捕捉买卖信号
• 金叉:DIF从下向上穿越DEA,通常视为买入信号。
• 死叉:DIF从上向下穿越DEA,通常视为卖出信号。
• 柱状线变化:红柱放量(变长)表示多头动量增强,缩量(变短)表示减弱;绿柱同理。
3. 识别趋势反转:背离
• 顶背离:价格创新高,但DIF/DEA未创新高(甚至走低),红柱缩量,预示多头趋势可能反转。
• 底背离:价格创新低,但DIF/DEA未创新低(甚至走高),绿柱缩量,预示空头趋势可能反转。
三、使用注意事项
1. 滞后性:MACD基于移动平均线计算,信号可能滞后于价格变动。
2. 假信号:在震荡行情中,金叉/死叉可能频繁出现,产生“杂音”。
3. 需结合其他工具:MACD应结合成交量、支撑阻力位、其他技术指标(如RSI、布林带)及基本面分析使用,避免孤立依赖。
4. 多周期验证:可用大周期(如日线)定趋势,小周期(如1小时线)找入场点,过滤假信号。
MACD是分析趋势方向、动量强弱和潜在反转点的有力工具,但需理解其局限性,并作为综合决策体系的一部分来应用。
话题与分类:
主题股票:
主题概念:
声明:遵守相关法律法规,所发内容承担法律责任,倡导理性交流,远离非法证券活动,共建和谐交流环境!

以下是MACD指标的Python实现源码:
方法一:使用pandas手动计算
import pandas as pd
import numpy as np
def calculate_macd(data, fast_period=12, slow_period=26, signal_period=9):
计算MACD指标
# 计算快慢EMA
data[‘EMA12‘] = data[‘close‘].ewm(span=fast_period, adjust=False).mean()
data[‘EMA26‘] = data[‘close‘].ewm(span=slow_period, adjust=False).mean()
# 计算DIF
data[‘DIF‘] = data[‘EMA12‘] - data[‘EMA26‘]
# 计算DEA(信号线)
data[‘DEA‘] = data[‘DIF‘].ewm(span=signal_period, adjust=False).mean()
# 计算MACD柱状图
data[‘MACD‘] = (data[‘DIF‘] - data[‘DEA‘]) * 2
return data[[‘DIF‘, ‘DEA‘, ‘MACD‘]]
方法二:使用TA-Lib库(更高效)
import talib
import pandas as pd
def calculate_macd_talib(close_prices, fast_period=12, slow_period=26, signal_period=9):
使用TA-Lib计算MACD指标
macd, macd_signal, macd_hist = talib.MACD(
close_prices,
fastperiod=fast_period,
slowperiod=slow_period,
signalperiod=signal_period
)
return macd, macd_signal, macd_hist
方法三:完整示例(含数据获取和可视化)
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
def get_stock_data(stock_code= 000001 , days=180):
获取股票历史数据
end_date = datetime.now().strftime( %Y%m%d )
start_date = (datetime.now() - timedelta(days=days)).strftime( %Y%m%d )
df = ak.stock_zh_a_daily(
symbol=f sz{stock_code} ,
start_date=start_date,
end_date=end_date,
adjust= qfq
)
return df[[‘date‘, ‘open‘, ‘high‘, ‘low‘, ‘close‘, ‘volume‘]]
# 获取数据并计算MACD
df = get_stock_data( 000001 , 180)
macd_result = calculate_macd(df)
# 可视化
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
# 价格图表
ax1.plot(df[‘date‘], df[‘close‘], label=‘收盘价‘, color=‘blue‘)
ax1.set_title(‘股票价格走势‘)
ax1.set_ylabel(‘价格‘)
ax1.legend()
ax1.grid(True)
# MACD图表
ax2.plot(df[‘date‘], macd_result[‘DIF‘], label=‘DIF线‘, color=‘red‘)
ax2.plot(df[‘date‘], macd_result[‘DEA‘], label=‘DEA线‘, color=‘green‘)
ax2.bar(df[‘date‘], macd_result[‘MACD‘], label=‘MACD柱‘, color=‘gray‘, alpha=0.5)
ax2.axhline(y=0, color=‘black‘, linestyle=‘-‘, linewidth=0.5)
ax2.set_title(‘MACD指标‘)
ax2.set_ylabel(‘MACD值‘)
ax2.legend()
ax2.grid(True)
plt.tight_layout()
plt.show()
MACD计算公式详解
1. EMA计算:
◦ EMA12 = 前一日EMA12 × 11/13 + 今日收盘价 × 2/13
◦ EMA26 = 前一日EMA26 × 25/27 + 今日收盘价 × 2/27
2. DIF(差离值):
◦ DIF = EMA12 - EMA26
3. DEA(信号线):
◦ DEA = 前一日DEA × 8/10 + 今日DIF × 2/10
4. MACD柱状图:
◦ MACD = (DIF - DEA) × 2
使用说明
• 默认参数:通常使用12、26、9作为快线、慢线和信号线周期
• 交易信号:
◦ 金叉:DIF由下向上突破DEA,买入信号
◦ 死叉:DIF由上向下跌破DEA,卖出信号
◦ 背离:价格与MACD走势不一致,预示趋势反转
安装依赖
pip install pandas numpy matplotlib
pip install TA-Lib # 需要单独安装,Windows用户可下载预编译版本
pip install akshare # 用于获取股票数据
Diff是两条均线的差值,相当DMA 12 和26之间的差值,意思是12相对于26的变化,近似于MA 20 ~12.26和的一半,0轴相当MA60均线,故DiF上穿0轴相当于MA 20上穿MA60,即指标发生穿越,有多头占优!若同时60均线也向上,此时形成中长期指标共振,能量更强大!
实际使用看拐头方向。又适合于比短线长一点趋势的捕抓。
如果说快慢线表示波动,那这个参数就是隐含波动,正时正向波动,负则负向波波。
若峰值变小,预示该方向力量被削弱,转势将来临。这个特征有时称为背离,实际价格幅度不高也一样。
平均线是收盘价的N日平均,每更新一日加入今天数,去掉N日前再平均。
公式:Ma N =(N. Pref(MA N,1) - pref(C, N) )+C) /N
每个数有出入两次,若大则影响大,现在有用加权法去此弊端
交叉表共振,前人有个好名字金叉死叉!显然其离真实意义甚远,用波动转换测价格不太靠谱!
非常精准地抓住了技术分析中的一个核心动态关系。这并非简单的同义替换,而是对市场价格行为在关键位置如何演变的深刻洞察。
1. 现象层:衰减是结果
价格运行到重要的压力位或支撑位时,其波动性(振幅、动能)常常会显著衰减,表现为:
形态上:K线实体变小,上下影线变多,整体进入窄幅震荡。
指标上:布林带收口,ATR(平均真实波幅)下降,成交量往往萎缩。
心理上:多空双方在此处陷入短暂平衡,都变得谨慎,不再贸然发动单边攻势。
这种“波动衰歇”现象,是价格触及关键技术位时的直接、可观测的市场表现。它就像一个弹簧被压缩到临界点,能量在积聚,但运动幅度暂时变小了。
2. 本质层:博弈是根源
波动衰歇的本质,是多空力量在关键位置达到动态平衡。
压力位:是前期套牢盘密集区或历史高点。价格上涨至此,空方(解套卖盘和新的看空者)力量增强,抑制了上涨动能;多方也忌惮于此,追高意愿减弱。双方力量对冲,导致上涨波动衰减,甚至反转。
支撑位:是前期筹码密集区或资金成本区。价格下跌至此,多方(抄底资金和前期买入者)力量增强,托住了价格;空方也担心反弹,抛压减轻。双方再次形成对峙,导致下跌波动衰减,可能酝酿反弹。
因此,压力/支撑位定义了博弈的战场,而波动衰歇则是战斗进入白热化僵持阶段的战场特征。
3. 应用要点:从衰歇看突破
理解这个等式,对实战的关键意义在于:
预警信号:在趋势行情中,如果出现明显的波动衰歇(如连续小线整理),应立即观察其是否发生在明显的压力或支撑位附近。这通常是原趋势动能减弱、可能面临变盘的早期信号。
决断窗口:波动衰歇的末期(如极致缩量后的再次放量),就是市场准备选择方向、打破平衡的时刻。此时价格向上突破衰歇区域,则压力位被转化为新支撑;向下跌破,则支撑位转化为新压力。
结合判断:必须结合成交量来确认衰歇的性质。高位压力区的无量衰歇(滞涨)是危险信号;低位支撑区的放量衰歇(恐慌后企稳)可能是筑底信号。同时,要放在大周期趋势背景下看,顺大趋势方向的突破(如在上涨趋势中回调至支撑位后的波动衰歇再启动)成功率更高。
总结而言,等式揭示了“位置”与“行为”的因果链:市场在关键的压力/支撑位(位置)上,多空力量会重新达成短暂平衡,外在表现就是波动衰歇(行为)。交易者通过识别“波动衰歇”这一行为,可以反向定位到潜在的关键“压力支撑”位,并预判这里即将发生的方向选择。 这是一个从市场动态中观察静态结构,并通过结构预判后续动态的经典分析逻辑。
金叉死叉目的是捉住大波动,通常在在大均线拐头附近出现比较准确,若走得平缓常反复操作止损,得不偿失!
1. 包含关系:任何技术指标中,大级别包含小级别,小级别对大级别有反作用力。
2. 力量对比:大级别指标力量强、作用时间长;小级别指标力量弱、作用时间短(如5分钟MACD影响约半小时)。
相互作用逻辑
1. 大级别主导时:
◦ 若大级别(如日线)处于强势,小级别的走弱仅是对行情的修正,最终会回归大级别方向。
◦ 若大级别处于弱势,小级别的走强也只是反弹修正。
2. 大级别不明确时:
◦ 此时小级别的方向积累可以影响和最终决定大级别的方向。
MACD多周期实战应用
1. 趋势判断:操作前,先观察大级别(如日线、周线)MACD是否形成明确趋势(如金叉)。无大趋势时,不适合大仓位介入。
2. 联动观察:
◦ 小级别(如5分钟)的底背离和金叉能引发反弹,但其持续性和高度取决于能否带动更大级别(如15分钟)MACD走强(例如拉回0轴上方)。
◦ 若小级别反弹无法带动大级别指标,反弹将衰竭,行情会回调。
◦ 大级别(如30、60分钟)MACD在0轴下方金叉仍属弱势,需要更小级别持续走强形成“合力”,才能推动大级别转势。
3. 风险预警:
◦ 小级别(如15分钟)MACD的钝化,可能引发更大级别(30、60分钟)的顶背离,形成一连串的调整压力。
◦ 卖点原则:不应等跌了再卖。当上涨进入背驰段,应利用小级别的高点分批离场。结合MACD,即在大周期顶背离时,利用小周期的高点逃顶。
4. 仓位控制:
◦ 当大小级别形成共振向上时(如小级别反弹周期恰好带动大级别MACD过0轴),是短线小幅加仓的机会,但需快进快出,并严格控制仓位。
◦ 一旦更小级别MACD出现钝化,且无法在日线级别形成良性结构,应转为谨慎。
关键变量
成交量是重要变数。出现出其不意的巨量成交时,可能短期内打破多级别指标的技术格局,实现快速突破。
MACD与均线的对应关系:
• 0轴对应60日均线:MACD的0轴是多空分界线,对应主图中的60日均线。当DIF线(白线)上穿0轴时,相当于价格突破60日均线;下穿0轴则相当于价格跌破60日均线。
• DIF线对应5日均线:MACD的白线(DIF)大致对应5日均线。
• DEA线对应10日或20日均线:MACD的黄线(DEA)对应10日或20日均线。
价格高低的相对性评价:
MACD指标的核心价值在于通过均线关系的对比来评价价格的相对高低:
1. 趋势判断:当DIF在0轴上方时,表示价格在60日均线之上,处于相对高位和上升趋势;在0轴下方则表示价格在60日均线之下,处于相对低位和下降趋势。
2. 动能评估:MACD柱状图(红绿柱)反映DIF与DEA的差值,直观显示多空力量对比。红柱放大表示上涨动能增强,绿柱放大表示下跌动能增强。
3. 交叉信号:DIF与DEA的金叉死叉对应短期均线与中期均线的交叉,提供买卖时机参考。
实际应用要点:
• 价格"真正高低"需要结合均线系统综合判断,单一价格数值没有绝对意义。
• MACD的背离现象(价格创新高而MACD未创新高)往往预示趋势反转,这是相对性评价的重要体现。
• 结合均线排列(多头/空头排列)与MACD信号,可以提高判断准确性。
MACD本质上是通过对比不同周期均线的离差来反映价格相对于均线系统的位置关系,这正是"具有相对性,真正高低要对比均线评价"的技术内涵。