如题 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 准备数据 data = pd.read_csv("your_data_file.csv") #导入你的数据文件 data['Date'] = pd.to_datetime(data['Date']) data.set_index('Date', inplace=True) # 定义函数以识别 Wolfe Wave 牛市和熊市形态 def find_wolfe_wave(data, window=50): wolfe_waves = [] for start in range(len(data) - window): subset = data.iloc[start:start + window] local_max = subset['High'].max() local_min = subset['Low'].min() point1 = subset['Low'].idxmin() point3_idx = subset[subset.index > point1]['Low'].idxmin() point5_idx = subset[subset.index > point3_idx]['Low'].idxmin() point2 = subset['High'].idxmax() point4_idx = subset[subset.index > point2]['High'].idxmax() if point5_idx == subset.index[-1]: if point1 < point2 < point3_idx < point4_idx < point5_idx: wolfe_waves.append((point1, point2, point3_idx, point4_idx, point5_idx)) elif point1 < point2 < point3_idx < point4_idx and (point2 - point1) > (point4_idx - point3_idx): wolfe_waves.append((point1, point2, point3_idx, point4_idx, point5_idx)) return wolfe_waves # 对数据应用函数 window = 50 wolfe_wave_patterns = find_wolfe_wave(data, window) # 画出数据和Wolfe Wave形态 plt.figure(figsize=(12, 6)) plt.plot(data['Close']) for pattern in wolfe_wave_patterns: point1, point2, point3, point4, point5 = pattern plt.plot([point1, point3, point5], [data.loc[point1, 'Low'], data.loc[point3, 'Low'], data.loc[point5, 'Low']], 'r-') plt.plot([point2, point4], [data.loc[point2, 'High'], data.loc[point4, 'High']], 'b-') plt.title('Wolfe Wave Patterns in Market Data') plt.xlabel('Date') plt.ylabel('Price') plt.show()
|