TradingView Pine脚本转Pandas/TA-Lib Python代码及pds计算求助
pds参数计算规则
pds是指标计算的滑动窗口周期长度,对应Pine脚本内置函数的周期参数:
- Pine中
sum(计算序列, pds):取当前K线及向前共pds根K线的序列值求和,为滚动窗口计算,每根K线返回一个对应窗口的求和结果 - Pine中
sma(计算序列, pds):取当前K线及向前共pds根K线的序列值做简单平均,同样为滚动窗口计算
Python代码实现(基于Pandas)
前提:你的K线数据已存储为Pandas的DataFrame结构,按时间升序排列,包含high、low、close、volume四个必填列。
1. wapScore(ZVWAP指标)实现
import pandas as pd import numpy as np # 如需使用TA-Lib实现SMA可额外导入:import talib def wap_score(df, pds): # 计算滚动周期内的VWAP sum_vol_close = (df['volume'] * df['close']).rolling(window=pds).sum() sum_vol = df['volume'].rolling(window=pds).sum() mean = sum_vol_close / sum_vol # 计算VWAP的滚动标准差 pow_diff = (df['close'] - mean) ** 2 # 下方rolling.mean()可替换为TA-Lib实现:sma_pow_diff = talib.SMA(pow_diff, timeperiod=pds) sma_pow_diff = pow_diff.rolling(window=pds).mean() vwapsd = np.sqrt(sma_pow_diff) # 返回ZVWAP得分 return (df['close'] - mean) / vwapsd # 调用示例,对应原脚本的三个周期参数 zvwap_48 = wap_score(df, 48) zvwap_199 = wap_score(df, 199) zvwap_484 = wap_score(df, 484)
2. 滚动周期VWAP实现
def rolling_vwap(df, period): # 计算典型价 typical_price = (df['high'] + df['low'] + df['close']) / 3 typical_price_vol = typical_price * df['volume'] # 滚动求和后计算VWAP cum_tp_vol = typical_price_vol.rolling(window=period).sum() cum_vol = df['volume'].rolling(window=period).sum() return cum_tp_vol / cum_vol # 调用示例,对应原脚本的48周期参数 vwap_48 = rolling_vwap(df, 48)
内容的提问来源于stack exchange,提问作者Toma
相关产品推荐
相关产品推荐

