使用【python】写MACD零轴上金叉的代码
时间: 2024-10-20 14:04:13 浏览: 33
Python实现MACD金叉和死叉的提示.pdf
在Python中,MACD(Moving Average Convergence Divergence,移动平均收敛发散指标)是一种常用的技术分析工具,用于判断股票、期货等金融市场的趋势变化。零轴上金叉通常是指短期移动平均线从下方穿过长期移动平均线,并且两者都位于零轴上方,这被认为是买入信号。以下是使用pandas库和matplotlib进行简单MACD零轴上金叉检测的一个示例:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 假设df_data是你获取的数据,包含'Close'列代表收盘价
def macd_crossover(df_data):
# 计算12日和26日的EMA(指数移动平均)
ema_12 = df_data['Close'].ewm(span=12).mean()
ema_26 = df_data['Close'].ewm(span=26).mean()
# 计算快线(12日EMA - 26日EMA),慢线(12日EMA),以及DIF(快线-慢线)
fast_line = ema_12 - ema_26
slow_line = ema_12
dif = fast_line - slow_line
# 计算DEA(DIF的9日移动平均)
dea = dif.ewm(span=9).mean()
# MACD柱状线(DEA - DIF)
macd = dea - dif
# 零轴上金叉条件:短周期线从下穿长周期线并同时在零轴上方
crossover_signal = (macd.shift() < macd) & (macd > 0)
return crossover_signal, macd
# 应用到数据上并画图
crossover, macd_df = macd_crossover(df_data)
df_data['Crossover Signal'] = crossover
plt.figure(figsize=(15, 7))
plt.plot(df_data.index, df_data['Close'], label='Close')
plt.plot(df_data.index, macd_df, label='MACD', color='red')
plt.axhline(y=0, linewidth=1, color='black', linestyle='--', label='Zero Axis')
plt.fill_between(df_data.index[crossover], 0, 2, where=crossover, facecolor='green', alpha=0.5, label='Golden Cross')
plt.legend()
plt.show()
阅读全文