如何使用 yfinance 和 pandas 计算加权移动平均线

How can I a weighted moving average using yfinance and pandas

我想比较一家公司的50天移动平均线和50天加权移动平均线

import yfinance as yf
import datetime as dt
start = '2021-05-01'                # format: YYYY-MM-DD
end = dt.datetime.now()             # today
stock='AMD'
df = yf.download(stock,start, end, interval='1h')

这只是为了设置数据框。

下面的代码使用移动平均线向数据框添加了一列,但我尝试对加权移动平均线做同样的操作却没有成功。

df['50MA']= df.iloc[:, 4].rolling(window=50).mean()

这是我的错误

for i in range(len(df.index)):
    df['W50MA']=(df.iloc[i, 4]) * (df.iloc[i, 5]/sum(df.iloc[:, 5]))

您可以尝试这样的操作:

weights = np.array(list(range(1, 51))) / 100
sum_weights = np.sum(weights)

def weighted_ma(value):
    return np.sum(weights*value) / sum_weights

df['50WMA'] = df.iloc[:, 4].rolling(window=50).apply(weighted_ma)