다음 펑크션에서 다이내믹 렝쓰를 쓸 수 있습니다:
alma()
change()
highest()
highestbars()
linreg()
lowest()
lowestbars()
mom()
sma()
sum()
vwma()
wma()
시리즈 렝쓰를 쓰면 베어리어블 피어리어드 기반 계산으로 어댑티브 파인 인디케이터를 더 쉽게 만들 수 있습니다. 아래 보기에 볼래틸리티를 써서 두터운 라인에서 ALMA 피어리어드를 줄이거나 늘리고 그것을 얇은 라인의 스태틱 ALAM 와 견줍니다:
//@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” 로 캐스트해 쓰도록 하십시오. 그리고 이들 펑크션은 매 바마다 셈을 합니다. 따라서 for
루프 밖에서 쓰도록 하고 if
블록이 매 바마다 실행되지 않도록 하십시오.
더 나은 트레이딩뷰를 만들 수 있도록 여러분의 피드백을 부탁드립니다.