You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 22:15:02