February 4, 2021
更多的Pine函数现在支持动态长度参数

去年9月,我们的一些内置Pine函数开始支持动态值作为其长度参数。现在,我们进一步扩展了此列表。以下函数现在也可以用于动态计算的长度:

bb()
bbw()
cci()
cmo()
cog()
correlation()
dev()
falling()
mfi()
percentile_linear_interpolation()
percentile_nearest_rank()
percentrank()
rising()
roc()
stdev()
stoch()
variance()
wpr()

通过传递序列作为长度参数,可以更轻松地创建自适应的Pine指标,该指标使用基于可变周期的计算。例如,以下脚本使用内置的 stdev() 函数为VWAP指标计算标准偏差范围。每隔一个小节,stdev() 计算的长度就会增加1,直到VWAP周期重置:

//@version=4
study(title="VWAP", shorttitle="VWAP", overlay=true)
src = input(title = "Source", type = input.source, defval = hlc3)
t = time("D")
start = na(t[1]) or t > t[1]
sumSrc = src * volume
sumVol = volume
sumSrc := start ? sumSrc : sumSrc + sumSrc[1]
sumVol := start ? sumVol : sumVol + sumVol[1]
vwapValue = sumSrc / sumVol
var barsSinceStart = 0
if start
    barsSinceStart := 0
barsSinceStart := barsSinceStart + 1
stdevLen = bar_index == 0 ? 3000 : barsSinceStart // max_bars_back workaround
vwapStdev = stdev(vwapValue, stdevLen)
plot(vwapValue, title="VWAP", color=color.blue)
upperBand = plot(vwapValue+vwapStdev, title="Upper Band", color=color.green)
lowerBand = plot(vwapValue-vwapStdev, title="Lower Band", color=color.green)
upperBand2 = plot(vwapValue+vwapStdev*2, title="Upper Band 2", color=color.yellow)
lowerBand2 = plot(vwapValue-vwapStdev*2, title="Lower Band 2", color=color.yellow)
fill(upperBand2, lowerBand2, color=color.yellow, transp=95)

请记住,这些功能需要在每根K线上进行评估,因此应在非针对每根K线上执行的`for`循环或`if`块之外使用它们。另外,将序列作为内置函数的长度传递有时会导致“Pine无法确定序列的引用长度(Pine cannot determine the referencing length of a series)”错误。您可以在我们的帮助中心中详细了解它以及如何解决该错误。

在我们的用户手册的发行说明中了解有关Pine的所有更新。

我们希望大家请求的这项新功能有用。请继续向我们发送您的反馈和建议。我们正在为您打造TradingView,很高兴听到您对我们平台更新的看法。


 

还没有关注我们的中文微信公众号?快来扫二维码吧!

关注市场的最快方式

开启图表