python做 macd底背离
时间: 2023-08-17 17:09:28 浏览: 148
可以使用Python来计算和绘制MACD(Moving Average Convergence Divergence)指标以及找出MACD底背离。下面是一个简单的示例代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 假设已经有了价格数据,存储在一个名为df的DataFrame中,包含日期和价格两列
# 例如:df = pd.read_csv('price_data.csv')
# 计算MACD指标
def calculate_macd(df, short_period=12, long_period=26, signal_smoothing=9):
df['EMA_short'] = df['Close'].ewm(span=short_period, adjust=False).mean()
df['EMA_long'] = df['Close'].ewm(span=long_period, adjust=False).mean()
df['MACD'] = df['EMA_short'] - df['EMA_long']
df['Signal'] = df['MACD'].ewm(span=signal_smoothing, adjust=False).mean()
df['Histogram'] = df['MACD'] - df['Signal']
return df
# 找出MACD底背离
def find_macd_divergence(df):
divergence_points = []
for i in range(2, len(df)-2):
if df.iloc[i-2]['Histogram'] > 0 and df.iloc[i-1]['Histogram'] > 0 and \
df.iloc[i]['Histogram'] < 0 and df.iloc[i+1]['Histogram'] < 0:
if df.iloc[i]['Close'] < df.iloc[i-2]['Close'] and df.iloc[i]['Close'] < df.iloc[i+1]['Close']:
divergence_points.append(df.iloc[i])
return pd.DataFrame(divergence_points)
# 绘制价格图和MACD指标
def plot_macd(df):
fig, ax1 = plt.subplots()
ax1.plot(df['Date'], df['Close'], color='blue')
ax1.set_xlabel('Date')
ax1.set_ylabel('Price', color='blue')
ax2 = ax1.twinx()
ax2.plot(df['Date'], df['MACD'], color='red', label='MACD')
ax2.plot(df['Date'], df['Signal'], color='green', label='Signal')
ax2.bar(df['Date'], df['Histogram'], color='gray', alpha=0.5, label='Histogram')
ax2.set_ylabel('MACD', color='black')
plt.legend()
plt.show()
# 调用函数计算MACD指标和找出底背离点
df = calculate_macd(df)
divergence_df = find_macd_divergence(df)
# 打印底背离点
print("MACD底背离点:")
print(divergence_df)
# 绘制图表
plot_macd(df)
```
请注意,以上代码仅为示例,实际使用时需要根据你的数据和需求进行适当的修改。