一、MACD指标简介
二、MACD的组成部分
-
DIF线(Difference):短期EMA与长期EMA的差值,通常使用12日EMA减去26日EMA。
-
DEA线(Signal Line):DIF线的移动平均线,通常使用9日EMA。
-
MACD柱(Histogram):DIF线与DEA线的差值,反映两者之间的距离。
三、MACD的交易信号
-
买入信号:当DIF线上穿DEA线,视为上升趋势的开始。
-
卖出信号:当DIF线下穿DEA线,视为下降趋势的开始。
四、MACD在Python中的实现
import pandas as pd
import matplotlib.pyplot as plt
def calculate_macd(data, short_period=12, long_period=26, signal_period=9):
"""
计算MACD指标
:param data: pandas DataFrame, 包含至少包含收盘价的数据
:param short_period: int, DIF线的短期EMA周期
:param long_period: int, DIF线的长期EMA周期
:param signal_period: int, DEA线的周期
:return: 原DataFrame附带MACD指标
"""
# 计算EMA
EMA_short = data['close'].ewm(span=short_period, adjust=False).mean()
EMA_long = data['close'].ewm(span=long_period, adjust=False).mean()
# 计算DIF和DEA
data['DIF'] = EMA_short - EMA_long
data['DEA'] = data['DIF'].ewm(span=signal_period, adjust=False).mean()
# 计算MACD柱
data['MACD Histogram'] = data['DIF'] - data['DEA']
return data
# 示例数据
df = pd.DataFrame({
'close': [22.27, 22.19, 22.08, 22.17, 22.18, 22.00, 21.99, 21.92, 21.91, 21.75, 21.76, 21.78, 21.84, 21.70, 21.65, 21.67, 21.58, 21.46, 21.35, 21.41, 21.49, 21.56, 21.70, 21.75, 21.65, 21.80, 21.92, 22.00]
})
# 计算MACD
df_macd = calculate_macd(df)
# 绘图
plt.figure(figsize=(14, 7))
plt.plot(df['close'], label='Close Price')
plt.plot(df_macd['DIF'], label='DIF')
plt.plot(df_macd['DEA'], label='DEA')
plt.bar(df.index, df_macd['MACD Histogram'], label='MACD Histogram', alpha=0.4)
plt.legend()
plt.show()
五、结论
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/106041
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!