移动平均线收敛发散指标(Moving Average Convergence Divergence, 简称MACD)是一种常用的技术分析指标, 用于判断股票价格的趋势和买卖信号。MACD指标由两条线组成:MACD线和信号线。
MACD线是通过计算短期指数移动平均线(EMA)和长期指数移动平均线(EMA)之间的差值得到的。信号线则是MACD线的移动平均线。
当MACD线从下向上穿过信号线时, 被视为买入信号; 当MACD线从上向下穿过信号线时, 被视为卖出信号。此外, MACD指标还可以通过观察MACD线和信号线之间的距离来判断市场的强弱。如果MACD线和信号线之间的距离逐渐扩大, 说明市场趋势较强; 如果距离逐渐缩小, 说明市场趋势可能减弱。
MACD指标的计算公式如下:
MACD线 = 短期EMA - 长期EMA
信号线 = MACD线的EMA
其中, 短期EMA和长期EMA的计算周期可以根据投资者的需求进行调整。一般来说, 短期EMA的周期为12天, 长期EMA的周期为26天。
在实际应用中, MACD指标可以与其他技术分析指标结合使用, 以提高分析的准确性。例如, 可以结合相对强弱指标(RSI)、随机指标(KDJ)等,来判断市场的超买超卖情况和趋势反转的可能性。
def stock_macd(stock_data, short_window=12, long_window=26, signal_window=9):
ema_short = stock_data['close'].ewm(span=short_window).mean()
ema_long = stock_data['close'].ewm(span=long_window).mean()
macd = ema_short - ema_long
signal = macd.ewm(span=signal_window).mean()
histogram = macd - signal
return macd, signal, histogram
画出MACD:
def plot_stock_macd(stock_data, short_window=12, long_window=26, signal_window=9):
stock_data['trade_date'] = pd.to_datetime(stock_data['trade_date'], format='%Y%m%d')
macd, signal, histogram = stock_macd(stock_data, short_window, long_window, signal_window)
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(stock_data['trade_date'], macd, label='MACD')
plt.plot(stock_data['trade_date'], signal, label='Signal Line')
plt.legend()
plt.title('MACD')
plt.subplot(2, 1, 2)
plt.bar(stock_data['trade_date'], histogram, label='Histogram')
plt.legend()
plt.title('Histogram')
plt.tight_layout()
plt.show()