커뮤니티

수식 작성 부탁드립니다

프로필 이미지
뎅이요
2022-01-26 16:10:46
1108
글번호 155822
답변완료
아래 지표를 5분챠트에서 30분 챠트 지표로 볼수 있도록 작성 부탁 드립니다 (5분챠트에서 타주기 30분지표) input : factor(10), AtrPeriod(20); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; // ATR계산(ATR 계산시 지수가중이동평균(rma)이용) alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; 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; prevSuperTrend = superTrend[1]; if prevSuperTrend == prevUpperBand Then { if close > upperBand Then direction = -1; Else direction = 1; } Else { if close < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; } plot1(superTrend,"superTrend",IFf(C > superTrend,GRAY , GRAY), 0, 1);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-01-27 10:46:36

안녕하세요 예스스탁입니다. input : ntime(30),factor(10), AtrPeriod(20); var : S1(0),D1(0),TM(0),TF(0),HH(0),LL(0),C1(0); var : src(0), AtrV(0),ATRv1(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = H; LL = L; C1 = C[1]; ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if H > HH Then HH = H; if L < LL Then LL = L; src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if C > upperBand Then direction = -1; Else direction = 1; } Else { if C < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; plot1(superTrend,"superTrend",IFf(C > superTrend,GRAY , GRAY), 0, 1); } } 즐거운 하루되세요 > 뎅이요 님이 쓴 글입니다. > 제목 : 수식 작성 부탁드립니다 > 아래 지표를 5분챠트에서 30분 챠트 지표로 볼수 있도록 작성 부탁 드립니다 (5분챠트에서 타주기 30분지표) input : factor(10), AtrPeriod(20); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; // ATR계산(ATR 계산시 지수가중이동평균(rma)이용) alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; 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; prevSuperTrend = superTrend[1]; if prevSuperTrend == prevUpperBand Then { if close > upperBand Then direction = -1; Else direction = 1; } Else { if close < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; } plot1(superTrend,"superTrend",IFf(C > superTrend,GRAY , GRAY), 0, 1);