下面是一个简单的Python示例,演示如何使用pandas库计算和应用均线指标:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟数据,假设这是收盘价
np.random.seed(42)
dates = pd.date_range('2023-01-01', periods=100)
prices = np.cumsum(np.random.randn(100)) + 100
# 创建DataFrame
df = pd.DataFrame(data={'Close': prices}, index=dates)
# 计算移动平均线
df['SMA5'] = df['Close'].rolling(window=5).mean() # 5天均线
df['SMA20'] = df['Close'].rolling(window=20).mean() # 20天均线
# 绘图
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['Close'], label='Close Price', color='lightgrey')
plt.plot(df.index, df['SMA5'], label='SMA5', color='blue')
plt.plot(df.index, df['SMA20'], label='SMA20', color='red')
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Price with SMA5 and SMA20')
plt.legend()
plt.show()
# 打印交叉点
cross_buy = (df['SMA5'] > df['SMA20']) & (df['SMA5'].shift(1) <= df['SMA20'].shift(1))
cross_sell = (df['SMA5'] < df['SMA20']) & (df['SMA5'].shift(1) >= df['SMA20'].shift(1))
print("Buy signals on:")
print(df.index[cross_buy])
print("Sell signals on:")
print(df.index[cross_sell])
这个示例中:
1. 我们生成了一组模拟的收盘价数据。
2. 计算了5天和20天的简单移动平均线(SMA)。
3. 使用matplotlib绘制了收盘价和均线。
4. 检测并输出了"金叉"和"死叉"的日期,用于生成买入和卖出信号。
运行这个示例需要确保安装了pandas和matplotlib库。可以通过以下命令安装:
pip install pandas matplotlib
这样就可以在Python中使用均线策略进行简单的量化分析。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |