如何使用 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)
我想比较一家公司的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)