幾個Pine函數現已支援動態長度參數

Sep 9, 2020

Pine編碼器現在可以在以下函數中使用動態計算長度:

alma()
change()
highest()
highestbars()
linreg()
lowest()
lowestbars()
mom()
sma()
sum()
vwma()
wma()

系列長度將使基於可變周期的計算更容易建立自適應Pine指標。範例如下,我們如何使用波動率來縮短或延長粗線的ALMA周期,並將其與細線所示的靜態ALMA進行比較:

//@version=4
study("Adaptive ALMA", "AALMA", true)
i_minLen    = input(10, minval = 1)
i_maxLen    = input(60, minval = 1)
i_adaptPct  = input(3., minval = 0, maxval = 100) / 100.0

startingLen = avg(i_minLen, i_maxLen)
var float dynamicLen = startingLen
highVolatility = atr(10) > atr(40)
if highVolatility
    dynamicLen := max(i_minLen, dynamicLen * (1 - i_adaptPct))
else
    dynamicLen := min(i_maxLen, dynamicLen * (1 + i_adaptPct))
dynamicAlma = alma(close, int(dynamicLen),  0.85, 6)
staticAlma  = alma(close, int(startingLen), 0.85, 6)

maColor(_ma) => close > _ma ? highVolatility ? #40FF00ff : #40FF0060 : highVolatility ? #FF0080ff : #FF008060
plot(dynamicAlma, "Dynamic Alma", maColor(dynamicAlma), 3)
plot(staticAlma,  "Static Alma",  maColor(staticAlma),  1)
// Follow the calculated Length in the Data Window.
plotchar(dynamicLen, "dynamicLength", "")

雖然使用浮點數動態計算長度可能會很方便,但請記得在函數調用它們之前,將其強制轉換為 “int” (如同本範例)。

同時請記得,這些函數需要在每根K線上求值,所以應該在 `for` loops之外使用,並且不能在每根K線上執行 `if` blocks。

我們希望大家要求的新功能對您有幫助,請繼續給我們反饋以進行改善。我們為您打造TradingView,並希望聽聽您對我們平台上這些高度需求的更新之看法。

Look first Then leap

TradingView專門為您打造,請確保您充分利用我們出色的功能
開啟圖表