求助:将Pine Script v2版本VWAP指标转换为v5版本报错
Pine Script v2转v5:VWAP标准差带指标适配方案
遇到的错误
错误位置565:28:未声明标识符'bool';错误位置565:23:'input'函数不存在名为'type'的参数;错误位置566:23:'input'函数不存在名为'type'的参数;错误位置567:24:'input'函数不存在名为'type'的参数;错误位置568:24:'input'函数不存在名为'type'的参数;错误位置570:29:'input'函数不存在名为'type'的参数;错误位置572:18:未声明标识符'tickerid';错误位置572:9:无法找到函数或函数引用'security'
核心错误修正点
- 布尔输入参数:v5不再支持
input(..., type=bool)写法,需改用input.bool()函数声明布尔类型输入 - 行情引用逻辑:v2的
security()函数替换为v5的request.security(),原tickerid变量替换为syminfo.tickerid - 语法细节调整:v2的
style=circles需改为plot.style_circles,sqrt/max需改为math.sqrt/math.max,study替换为indicator
修正后的完整v5代码
//@version=5 indicator("VWAP Stdev Bands v2 Mod", overlay=true) // 标准差参数输入 devUp1 = input.float(1.28, title="Stdev above (1)") devDn1 = input.float(1.28, title="Stdev below (1)") devUp2 = input.float(2.01, title="Stdev above (2)") devDn2 = input.float(2.01, title="Stdev below (2)") devUp3 = input.float(2.51, title="Stdev above (3)") devDn3 = input.float(2.51, title="Stdev below (3)") devUp4 = input.float(3.09, title="Stdev above (4)") devDn4 = input.float(3.09, title="Stdev below (4)") devUp5 = input.float(4.01, title="Stdev above (5)") devDn5 = input.float(4.01, title="Stdev below (5)") // 显示开关参数(改用v5的input.bool) showDv2 = input.bool(true, title="Show second group of bands?") showDv3 = input.bool(true, title="Show third group of bands?") showDv4 = input.bool(false, title="Show fourth group of bands?") showDv5 = input.bool(false, title="Show fifth group of bands?") showPrevVWAP = input.bool(false, title="Show previous VWAP close") // 替换security为request.security,tickerid改为syminfo.tickerid start = request.security(syminfo.tickerid, "D", time) newSession = change(start) ? 1 : 0 // VWAP计算逻辑保留 vwapsum = newSession ? hl2 * volume : vwapsum[1] + hl2 * volume volumesum = newSession ? volume : volumesum[1] + volume v2sum = newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2 myvwap = vwapsum / volumesum dev = math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0)) // 绘图部分 A = plot(myvwap, style=plot.style_circles, title="VWAP", color=color.black) U1 = plot(myvwap + devUp1 * dev, style=plot.style_circles, title="VWAP Upper", color=color.gray) D1 = plot(myvwap - devDn1 * dev, style=plot.style_circles, title="VWAP Lower", color=color.gray) U2 = plot(showDv2 ? myvwap + devUp2 * dev : na, color=color.red, title="VWAP Upper (2)") D2 = plot(showDv2 ? myvwap - devDn2 * dev : na, color=color.green, title="VWAP Lower (2)") U3 = plot(showDv3 ? myvwap + devUp3 * dev : na, title="VWAP Upper (3)", color=color.red) D3 = plot(showDv3 ? myvwap - devDn3 * dev : na, title="VWAP Lower (3)", color=color.green) U4 = plot(showDv4 ? myvwap + devUp4 * dev : na, title="VWAP Upper (4)", color=color.red) D4 = plot(showDv4 ? myvwap - devDn4 * dev : na, title="VWAP Lower (4)", color=color.green) U5 = plot(showDv5 ? myvwap + devUp5 * dev : na, title="VWAP Upper (5)", color=color.red) D5 = plot(showDv5 ? myvwap - devDn5 * dev : na, title="VWAP Lower (5)", color=color.green) prevwap = newSession ? myvwap[1] : prevwap[1] plot(showPrevVWAP ? prevwap : na, style=plot.style_circles, color=close > prevwap ? color.green : color.red) // 填充部分 fill(U1, U2, color=color.red, transp=90, title="Over Bought Fill 1") fill(D1, D2, color=color.green, transp=90, title="Over Sold Fill 1") fill(U2, U3, color=color.red, transp=90, title="Over Bought Fill 2") fill(D2, D3, color=color.green, transp=90, title="Over Sold Fill 2") fill(U3, U4, color=color.red, transp=90, title="Over Bought Fill 3") fill(D3, D4, color=color.green, transp=90, title="Over Sold Fill 3") fill(U4, U5, color=color.red, transp=90, title="Over Bought Fill 4") fill(D4, D5, color=color.green, transp=90, title="Over Sold Fill 4") fill(A, U1, color=color.gray, transp=90, title="Middle Fill Up") fill(A, D1, color=color.gray, transp=90, title="Middle Fill Down")
内容的提问来源于stack exchange,提问作者saltuklev
相关产品推荐
相关产品推荐

