在上一节中,我们学习了如何获取完整的历史股价数据。本节将进一步学习如何计算和绘制均线。
准备工作:获取股价数据
首先,我们将获取股票价格的函数单独编写,以便后续调用。
import yfinance as yf
def get_prices(stock_symbol):
data = yf.download(stock_symbol)
return data
prices = get_prices("^NDX")
计算均线
接下来,我们计算均线。这里选择了最简单的简单移动平均线(SMA)。我们不必自己计算,可以直接使用现成的函数。
sma_20 = prices['Adj Close'].rolling(window=20).mean() # 20日均线
绘制图表
现在,我们可以根据上一节的内容绘制价格图表了。
import matplotlib.pyplot as plt
plt.plot(prices['Adj Close'], label='price')
plt.plot(sma_20, label='sma20')
plt.title('Nasdaq 100 price and sma')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.grid(True)
plt.show()
添加主函数
为了良好的代码结构和避免一些潜在的错误,我们将主要代码放在一个名为main()
的函数中。
import yfinance as yf
import matplotlib.pyplot as plt
def get_prices(stock_symbol):
data = yf.download(stock_symbol)
return data
def main():
prices = get_prices("^NDX")
sma_20 = prices['Adj Close'].rolling(window=20).mean() # 20日均线
plt.plot(prices['Adj Close'], label='price')
plt.plot(sma_20, label='sma20')
plt.title('Nasdaq 100 price and sma')
plt.xlabel('date')
plt.ylabel('price')
plt.legend()
plt.grid(True)
plt.show()
if __name__ == '__main__':
main()
通过这个简单的步骤,我们就能够绘制出如下图所示的股价和均线图表。

以上就是股票均线的计算和绘制方法,下一节我们就可以尝试建立一个简单的均线交易系统了。
怎么把sma改成ema呢
好问题, 你把sma换成
ema = df['Adj Close'].ewm(span=window_size).mean()
就可以了。