📜  创建 50 天和 100 天移动平均线 python (1)

📅  最后修改于: 2023-12-03 15:36:52.270000             🧑  作者: Mango

创建 50 天和 100 天移动平均线

在股票分析中,常常会使用移动平均线(Moving Average,简称 MA)来反映股票走势的趋势,平滑股票价格的波动。MA 通常涵盖了指定期间内的平均价格,因此可以让分析者更清晰地认识股票的走势方向和趋势状态。本文将简单介绍如何使用 Python 创建 50 天和 100 天的移动平均线。

数据准备

首先需要获取股票价格数据。在 Python 中,可以使用以下代码获取 Microsoft 公司的股票数据。

import yfinance as yf

msft = yf.Ticker("MSFT")
history = msft.history(period="max")
创建移动平均线

有了股票价格数据之后,可以开始创建移动平均线了。以下是一个简单的函数,用于计算指定时间窗口内的移动平均线。

def moving_average(data, window):
    weights = np.repeat(1.0, window) / window
    ma = np.convolve(data, weights, "valid")
    return ma

这个函数使用了 numpy 库提供的 convolve 函数对股票价格数据进行卷积操作,并对每个时间窗口内的价格数据进行加权平均。代码中的 window 参数指定了时间窗口的大小,例如指定为 50,即为 50 天窗口。调用这个函数可以得到每日的 50 天移动平均线和 100 天移动平均线。

import numpy as np

# 计算 50 天和 100 天移动平均线
window_50 = 50
window_100 = 100
ma_50 = moving_average(history["Close"], window_50)
ma_100 = moving_average(history["Close"], window_100)
可视化移动平均线

有了移动平均线数据之后,最好可以将其可视化出来进行分析。以下是使用 matplotlib 库生成图表的示例代码。

import matplotlib.pyplot as plt

# 可视化 50 天和 100 天移动平均线
fig, ax = plt.subplots(figsize=(16, 9))
ax.plot(history.index[-len(ma_50) :], ma_50, label=f"{window_50} days MA", linewidth=2)
ax.plot(history.index[-len(ma_100) :], ma_100, label=f"{window_100} days MA", linewidth=2)
ax.plot(history.index[-len(history) :], history["Close"], label="Close", linewidth=1, alpha=0.5)
ax.legend(loc="upper left")
ax.set_title("Microsoft Moving Average")
ax.set_xlabel("Date")
ax.set_ylabel("Price")
plt.show()

这个示例代码使用了 matplotlib 库的 subplots 函数创建一个图表对象,并使用 plot 函数绘制移动平均线和股票价格走势图。其中,history.index 为时间轴数据,history["Close"] 为股票收盘价数据,ma_50 为 50 天移动平均线数据,ma_100 为 100 天移动平均线数据。调用 legend 函数可以将不同的数据线分别标注出来,调用 set_titleset_xlabelset_ylabel 函数可以设置图表的标题、横轴标签和纵轴标签。

未完全理解的地方,可以参考以下文档: