我有一个包含股票价格数据的时间序列。
我想计算每一行的资金流量指数(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 个参数来计算上述值。