0

我想将以下 Pine 脚本转换为 python 来计算 vwap1 变量的值而不绘制结果,我只想计算 vwap1 的值:

wapScore(pds) =>
    mean = sum(volume*close,pds)/sum(volume,pds)
    vwapsd = sqrt(sma(pow(close-mean, 2), pds) )
    (close-mean)/vwapsd

vwap1 = input(48)
plot(vwapScore(vwap1),title="ZVWAP2-48",color=#35e8ff, linewidth=2,transp=0.75)

我尝试了以下方法:

def calculate_SMA(ser, days):
    sma = ser.rolling(window=days).mean()
    return sma


def calculate_Zscore(pds, volume, close):
    mean = sum(volume * close, pds) / sum(volume, pds)
    vwapsd = np.sqrt(calculate_SMA(pow(close - mean, 2), pds))
    return (close - mean) / vwapsd

我正在使用calculate_Zscore函数来计算值并将其添加到熊猫数据框中,但它给了我不同的值而不是交易视图上的值

candles["Zscroe-48"] = zscore.calculate_Zscore(48,candles["Volume"], candles["Close"])

有人可以告诉我我做错了什么或我错过了什么吗?

4

1 回答 1

1

我认为问题出在mean. 尝试这个:

def calculate_SMA(ser, pds):

    sma = ser.rolling(window=pds).mean()
    return sma

def calculate_Zscore(pds,df):

    df['mean'] = ((df['Close']*df['Volume']).rolling(pds).sum())/df['Volume'].rolling(pds).sum()
    #mean = sum(volume * close, pds) / sum(volume, pds)
    df['vwapsd'] = np.sqrt(calculate_SMA(pow(df['Close'] - df['mean'], 2), pds))
    #df['z-scoor'] = (df['Close'] - df['mean']) / df['vwapsd']
    return (df['Close'] - df['mean']) / df['vwapsd']
于 2021-09-30T18:38:39.003 回答