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

Pine Script v2转v5后结果不一致问题求助

Pine Script v2转v5后当日高低价获取异常问题

将Pine Script v2脚本转换为v5后,转换过程无报错,但运行结果与v2版本不一致:v2能正确获取当日高低价数据,v5却调用了前一日的高低价数据。

对比效果:
V2版本效果
V5版本效果

v2 原脚本

h = security(tickerid, "D", high)
l= security(tickerid, "D", low)

fibext = input(1)
fib6 = l
fib5 = input(0.2360)
fib4 = input(0.382)
fib3 = input(0.50)
fib2 = input(0.618)
fib1 = input(0.786)
fib0 = h
range = (h-l)

fib0plot = h-(range*fibext)
fib1plot = (range*fib1)+l
fib2plot = (range*fib2)+l
fib3plot = (range*fib3)+l
fib4plot = (range*fib4)+l
fib5plot = (range*fib5)+l
fib6plot = (range*fibext)+l

plot(fib0plot, color=gray,linewidth=3, style=solid, title="Fib0")
plot(fib1plot, color=aqua,linewidth=2, style=solid, title="Fib1")
plot(fib2plot, color=gray,linewidth=2, style=solid, title="Fib2")
plot(fib3plot, color=orange,linewidth=2, style=solid, title="Fib3")
plot(fib4plot, color=orange,linewidth=2, style=solid, title="Fib4")
plot(fib5plot, color=aqua,linewidth=2, style=solid, title="Fib5")
plot(fib6plot, color=gray,linewidth=3, style=solid, title="Fib6")

v5 转换后脚本

h = request.security(syminfo.tickerid, 'D', high, barmerge.gaps_off)
l = request.security(syminfo.tickerid, 'D', low, barmerge.gaps_off)

fibext = input(1)
fib6 = l
fib5 = input(0.2360)
fib4 = input(0.382)
fib3 = input(0.50)
fib2 = input(0.618)
fib1 = input(0.786)
fib0 = h
range_1 = h - l

fib0plot = h - range_1 * fibext
fib1plot = range_1 * fib1 + l
fib2plot = range_1 * fib2 + l
fib3plot = range_1 * fib3 + l
fib4plot = range_1 * fib4 + l
fib5plot = range_1 * fib5 + l
fib6plot = range_1 * fibext + l

plot(fib0plot, color=color.new(color.gray, 0), linewidth=3, style=plot.style_line, title='Fib0')
plot(fib1plot, color=color.new(color.aqua, 0), linewidth=2, style=plot.style_line, title='Fib1')
plot(fib2plot, color=color.new(color.gray, 0), linewidth=2, style=plot.style_line, title='Fib2')
plot(fib3plot, color=color.new(color.orange, 0), linewidth=2, style=plot.style_line, title='Fib3')
plot(fib4plot, color=color.new(color.orange, 0), linewidth=2, style=plot.style_line, title='Fib4')
plot(fib5plot, color=color.new(color.aqua, 0), linewidth=2, style=plot.style_line, title='Fib5')
plot(fib6plot, color=color.new(color.gray, 0), linewidth=3, style=plot.style_line, title='Fib6')

问题原因与解决方法

  • 核心差异:v2的security()函数默认启用前瞻引用(lookahead),会实时获取当前未完成日线bar的最新高低价;而v5的request.security()默认关闭前瞻引用,仅返回已完全闭合的日线bar数据,因此当日交易时段会调用前一日的高低价。
  • 修正代码:修改request.security()的参数,启用前瞻引用:
    h = request.security(syminfo.tickerid, 'D', high, barmerge.gaps_off, barmerge.lookahead_on)
    l = request.security(syminfo.tickerid, 'D', low, barmerge.gaps_off, barmerge.lookahead_on)
    
  • 额外验证:确保v2和v5脚本的图表时区设置一致,避免时区差异导致日线bar的时间判定不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:35:19