PythonPandas货币流动指数

2024-05-19 09:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python相当陌生,正在尝试实现熊猫的资金流指数。但是我仍然觉得我没有把它做得像Python中那样优雅。我得到的价值观似乎与雅虎财经的价值观不一致。在

That's where I got my formulas from

我很感激我能得到的每一个帮助。或者如何让它更具表现力或优雅。在

def MoneyFlowIndex(df, periods=14):
    typical_price = (df.High + df.Low + df.Close) / 3
    raw_money_flow = typical_price * df.Volume

    direction = []
    close_old = 0;

    for index, value in df['Adj Close'].iteritems():
        if(index == 0):
            direction.append(0)
        else:
            direction.append(-1 if value - close_old < 0 else 1)
        close_old = value

    raw_money_flow =  raw_money_flow.to_frame(name='raw_money_flow')
    raw_money_flow['direction'] = direction

    mfi = pd.DataFrame(index=df.index)
    mfi['mfi_'+str(periods)] = df['Adj Close']*0
    for i in reversed(range(len(df.index))):
        if i >= 14:
            pos_mf_prd = raw_money_flow[i-periods:i ][raw_money_flow.direction > 0].raw_money_flow.sum()
            neg_mf_prd = raw_money_flow[i-periods:i][raw_money_flow.direction < 0].raw_money_flow.sum()
        mf = 100 - 100/(1 + pos_mf_prd/neg_mf_prd)
        else:
            mf = 0
        mfi.iloc[i]['mfi_'+str(periods)] = mf
    return mfi

非常感谢 本


Tags: dfcloseindexrawifvalueflowold

热门问题