다음 펑크션에서 다이내믹 렝쓰를 쓸 수 있습니다:
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
블록이 매 바마다 실행되지 않도록 하십시오.
더 나은 트레이딩뷰를 만들 수 있도록 여러분의 피드백을 부탁드립니다.