【问题标题】:How can I a weighted moving average using yfinance and pandas如何使用 yfinance 和 pandas 进行加权移​​动平均
【发布时间】:2021-10-11 22:15:43
【问题描述】:

我想比较一家公司的 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]))

【问题讨论】:

    标签: python pandas dataframe yfinance


    【解决方案1】:

    你可以试试这样的:

    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)
    

    【讨论】:

    • 啊,谢谢!完全错了
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2021-03-31
    • 2019-07-08
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多