커뮤니티

SuperTrend 시작위치 질문입니다.

프로필 이미지
투자
2024-09-30 01:41:51
698
글번호 183832
답변완료
주식 종목에 아래 SuperTrend 수식을 적용해보면, 시작 위치가 4번째 봉부터 표시 됩니다. AtrPeriod로 지정된 위치부터 표시되도록 수정 부탁 드립니다. input : AtrPeriod(13),factor(3); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); var : Color(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then { direction = 1; Color = Red; } if C < LowerBand Then { direction = -1; Color = Blue; } if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; Plot1(supertrend, "SuperTrend", Color, DEF, 1); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-30 13:47:24

안녕하세요 예스스탁입니다. 단순이평으로 ATR을 계산해도 13번째 봉부터 출력되는 것은 아닙니다. truerage계산에 필요한 봉수가 있고 supertrend에 요구되는 봉이 있어 AtrPeriod을 13으로 지정하셔도 15번째봉부터 출력되게 됩니다. input : AtrPeriod(13),factor(3); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); var : Color(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); //ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식 ATrV = ATR(AtrPeriod); //단순이평방식 upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then { direction = 1; Color = Red; } if C < LowerBand Then { direction = -1; Color = Blue; } if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; Plot1(supertrend, "SuperTrend", Color, DEF, 1); } 즐거운 하루되세요 > 투자 님이 쓴 글입니다. > 제목 : SuperTrend 시작위치 질문입니다. > 주식 종목에 아래 SuperTrend 수식을 적용해보면, 시작 위치가 4번째 봉부터 표시 됩니다. AtrPeriod로 지정된 위치부터 표시되도록 수정 부탁 드립니다. input : AtrPeriod(13),factor(3); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); var : Color(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then { direction = 1; Color = Red; } if C < LowerBand Then { direction = -1; Color = Blue; } if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; Plot1(supertrend, "SuperTrend", Color, DEF, 1); }