熊猫数据框:计算自定义移动平均线

数据挖掘 Python 时间序列 熊猫
2022-03-09 07:11:14

我有一个包含股票价格数据的时间序列。

我想计算每一行的资金流量指数(MFI)。

鉴于 MFI,使用以前的大约。14 行来计算当前的 MFI,这样做的最佳方法是什么?

下面计算给定 DataFrame 的当前MFI,但我想为数据框中的每一行实现这个

# Typical Price =(high price + low price + closing price) / 3
tp=(hst['High']+hst['Low']+hst['Close'])/3    
tp=tp.to_frame(name='Price')

# Raw money flow = typical price x volume
tp['Raw']=tp['Price'] * hst['Volume']

# Identify flow (upwards or downwards)
tp['Direction'] = np.where(np.nan_to_num(tp['Raw'].shift(1))>tp['Raw'], 'up', 'down')
mfr=0
# Money flow ratio = (14-day Positive Money Flow) / (14-day Negative Money Flow)
if tp.loc[tp['Direction']=='down']['Price'].sum(axis=0) != 0:
    mfr=tp.loc[tp['Direction']=='up']['Price'].sum(axis=0) / tp.loc[tp['Direction']=='down']['Price'].sum(axis=0)

# MFI = 100 - 100 / (1 + money flow ratio)
100-(100/(1+ mfr))

我设法使用该'apply'函数来解决这个问题,但该函数只允许 1 个参数,而我需要传递超过 1 个参数来计算上述值。

1个回答

使用以下内容添加计算上述函数的列

quote['MFITEST']=quote['Date'].apply(lambda x: calc_mfi(quote,14,x))