去年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,很高兴听到您对我们平台更新的看法。
还没有关注我们的中文微信公众号?快来扫二维码吧!