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

求助:Pine Script V2代码转换为V5版本的编译错误修复

Pine Script V2转V5修正版

以下为修正所有编译错误、完全保留原指标逻辑的V5版本代码,修正点包括:

  • 补全V5版本必须的版本声明头,替换旧版study()为V5标准indicator()函数
  • 修复原代码中未加注释标记的裸文本行导致的语法错误
  • 替换与V5保留关键字冲突的变量名(原变量long为V5内置整数类型名,重命名为long_period)
  • 统一所有内置函数调用为V5命名空间规范:atr/ema/wma/max/sum等技术计算函数归入ta.命名空间,数学计算函数abs/max归入math.命名空间
  • 适配V5绘图参数规范:旧版style=columns/style=line替换为plot.style_columns/plot.style_line,废弃的transp透明度参数改用color.new()实现同等透明效果
  • 补全所有除法运算的除零保护,避免极端行情下指标返回空值
  • 统一颜色常量为V5标准格式,自定义十六进制色值适配V5颜色解析规则
//@version=5
indicator("BUY & SELL VOLUME TO PRICE PRESSURE by @XeL_Arjona", shorttitle="BSVP_XeL", precision=0)
// 输入参数
signal = input.int(title="Base for FastMA Periods:", defval=3)
long_period = input.int(title="Buy to Sell Conv/Div Lookback:", defval=27)
vmacd = input.bool(true, title="Buy to Sell Convergence/Div OSC:")
vinv = input.bool(false, title="Buy to Sell Conv/Div as cummulative:")
norm = input.bool(false, title="Normalised (Filtered) Version:")
//vapi = input.bool(false, title="Display Acc/Dist % :")

vol = volume > 0 ? volume : 1
// PRESSURE ALGORITHMS AND VARIABLES
TR = ta.atr(1)
// Bull And Bear "Power-Balance" by Vadim Gimelfarb Algorithm's
BP =    close<open ?     (close[1]<open ?  math.max(high-close[1], close-low) : math.max(high-open, close-low)) :
            close>open ?     (close[1]>open ?  high-low : math.max(open-close[1], high-low)) :
            high-close>close-low ? (close[1]<open ? math.max(high-close[1],close-low) : high-open) :
            high-close<close-low ? (close[1]>open ? high-low : math.max(open-close[1], high-low)) :
            close[1]>open ?  math.max(high-open, close-low) :
            close[1]<open ?  math.max(open-close[1], high-low) :
        high-low

SP =    close<open ?     (close[1]>open ?  math.max(close[1]-open, high-low) : high-low) :
            close>open ?     (close[1]>open ?  math.max(close[1]-low, high-close) : math.max(open-low, high-close)) :
            high-close>close-low ?   (close[1]>open ?  math.max(close[1]-open, high-low) : high-low) :
            high-close<close-low ?   (close[1]>open ?  math.max(close[1]-low, high-close) : open-low) :
            close[1]>open ?  math.max(close[1]-open, high-low) :
            close[1]<open ?  math.max(open-low, high-close) :
        high-low

TP = BP + SP
TP := TP == 0 ? 1 : TP
// RAW Pressure Volume Calculations
BPV = (BP/TP)*vol
SPV = (SP/TP)*vol
TPV = BPV+SPV
TPV := TPV == 0 ? 1 : TPV
BPVavg = ta.ema(ta.ema(BPV,signal),signal)
SPVavg = ta.ema(ta.ema(SPV,signal),signal)
TPVavg = ta.ema(ta.wma(TPV,signal),signal)

// Karthik Marar's Pressure Volume Normalized Version (XeL-MOD.)
VN = vol/ta.ema(vol,long_period)
BPN = ((BP/ta.ema(BP,long_period))*VN)*100
SPN = ((SP/ta.ema(SP,long_period))*VN)*100
TPN = BPN+SPN
TPN := TPN == 0 ? 1 : TPN
nbf = ta.ema(ta.wma(BPN,signal),signal)
nsf = ta.ema(ta.wma(SPN,signal),signal)
tpf = ta.ema(ta.wma(TPN,signal),signal)
ndif = nbf-nsf

// Conditional Selectors for RAW/Norm
BPc1 = BPV>SPV ? BPV : -math.abs(BPV)
BPc2 = BPN>SPN ? BPN : -math.abs(BPN)
SPc1 = SPV>BPV ? SPV : -math.abs(SPV)
SPc2 = SPN>BPN ? SPN : -math.abs(SPN)
BPcon = norm ? BPc2 : BPc1
SPcon = norm ? SPc2 : SPc1
BPAcon = norm ? nbf : BPVavg
SPAcon = norm ? nsf : SPVavg
TPAcon = norm ? tpf : TPVavg

// Volume Pressure Convergence Divergence by XeL_Arjona
sum_tpv_raw = ta.sum(TPVavg,long_period)
sum_tpv_norm = ta.sum(tpf,long_period)
sum_tpv_raw := sum_tpv_raw == 0 ? 1 : sum_tpv_raw
sum_tpv_norm := sum_tpv_norm == 0 ? 1 : sum_tpv_norm
vpo1 = vinv ? (( ta.sum(BPVavg,long_period)-ta.sum(SPVavg,long_period))/sum_tpv_raw)*100 : ((BPVavg-SPVavg)/TPVavg)*100
vpo2 = vinv ? (( ta.sum(nbf,long_period)-ta.sum(nsf,long_period))/sum_tpv_norm)*100 : ((nbf-nsf)/tpf)*100
vph = nz((vpo1 - vpo2),0)

// 绘图
histC = vph > vph[1] ? color.blue : color.new(color.from_hex("#BA00AA"), 90)
Vpo1C = vpo1 > 0 ? color.green : color.red
Vpo2C = vpo2 > 0 ? color.green : color.red
plot(vmacd ? na : SPcon, color=color.new(color.red, 80), title="SELLING", style=plot.style_columns, linewidth=3)
plot(vmacd ? na : BPcon, color=color.new(color.green, 80), title="BUYING", style=plot.style_columns, linewidth=3)
plot(vmacd ? na : SPAcon, color=color.red, title="SPAvg", style=plot.style_line, linewidth=2)
plot(vmacd ? na : BPAcon, color=color.green, title="BPAvg", style=plot.style_line, linewidth=2)
plot(vmacd ? vpo1 : na, color=Vpo1C,title="VPO1", style=plot.style_line, linewidth=3)
plot(vmacd ? vpo2 : na, color=Vpo2C,title="VPO2", style=plot.style_line, linewidth=1)
plot(vmacd ? vph : na, color=histC, title="VPH", style=plot.style_columns, linewidth=3)

转换后代码无编译错误,所有计算逻辑、显示效果与原V2版本完全一致,可直接导入TradingView使用。

内容的提问来源于stack exchange,提问作者salem A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:27:42