下载
登录/ 注册
主页
论坛
视频
热股
可转债
下载
下载

Macd分析(不定时更新)

26-03-31 10:27 271次浏览
知行191011
+关注
博主要求身份验证
登录用户ID:


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是分析趋势方向、动量强弱和潜在反转点的有力工具,但需理解其局限性,并作为综合决策体系的一部分来应用。
打开淘股吧APP
1
评论(12)
收藏
展开
热门 最新
知行191011

26-03-31 11:17

1
指标理解:
Diff是两条均线的差值,相当DMA 12 和26之间的差值,意思是12相对于26的变化,近似于MA 20 ~12.26和的一半,0轴相当MA60均线,故DiF上穿0轴相当于MA 20上穿MA60,即指标发生穿越,有多头占优!若同时60均线也向上,此时形成中长期指标共振,能量更强大!
知行191011

26-03-31 11:02

0
 MACD(Moving Average Convergence Divergence,指数平滑移动平均线)是技术分析中常用的趋势跟踪动量指标,由Gerald Appel于1970年代提出。其核心由三部分组成:DIF线(12日EMA与26日EMA的差值)、DEA线(DIF线的9日EMA)、MACD柱(DIF与DEA差值的2倍)。

以下是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  # 用于获取股票数据
刷新 首页 上一页 下一页末页
提交