커뮤니티

지표 작성 부탁드립니다

프로필 이미지
뽄때
2026-01-20 18:59:40
160
글번호 229940
답변완료

오랜만에 인사를 드립니다

항상 많은 도움과 조언을 주셔서 감사를 드립니다


새로운 지표를 만들려고 하는데, 캔들이 새로 생성될 때마다, 지표값을 다시 만들어가야 하는데

제 코딩실력으로는 부족해서 도움요청을 드립니다.

지표를 구하는 순서는 아래와 같습니다


1) ‘총 경로길이’ 산정 (산정기간 N=14 일)


총 에너지(경로 길이) 계산 = 변화 절대값의 총합 = 36 (N기간 동안의 합)


2) 순상승/순하락 계산  ( N=14 일)

14봉 전 종가 118 → 현재 종가 120

순상승=max(120−118,0)=2

순하락=max(118−120,0)=0 : (상승했으므로, 순하락은 “0”임)

14일전 종가보다 현재의 종가가 상승한 경우는

순하락은 무조건 0임


반대로 14봉전 종가 120이고 현재 종가 118일 경우

순상승=max(118−120,0)=0  (하락했으므로, 순상승은 “0”임)

순하락=max(120−118,0)=2


3) uTEI_raw / dTEI_raw

uTEI_raw = 순상승(2)/총 경로길이(36) = 0.0556

dTEI_raw = 순하락(0)/총 경로길이(36) = 0


4) 평활화 작업을 통해 uTEI, dTEI 만들기 (N=14(14일인 경우) → α=1/15)

** 이전 uTEI(바로 직전 봉의 값)**를 0.6992 라고 가정

** 현재 uTEIraw​ = 0.0556 (3번에서 값 계산 완료)

**  α=1/15 ≈ 0.0667 (n값을 14로 사용)


uTEI현재 = uTEI(이전봉 값) + α(uTEI_raw - uTEI(이전봉 값))

=> uTEI(현재) = 0.6992 + 0.0667(0.0556-0.6992)


dTEI(현재) ​= 0 (순하락이 0이라 계속 0쪽으로)



5) abs값 구하기

abs = max(uTEI, dTEI ) =  max(0.6563,0) = 0.6563



6) 위에서 구한 값을 퍼센타일(u_pct / d_pct / abs_pct)형식으로 바꾸기

예시 P = 10 으로 시연. (P는 값을 변경할 수 있도록 변수로 가져가야 함)


최근 10개의 uTEI가 아래였다고 가정(현재 포함):


현재 0.6563보다 작거나 같은 값은 자기 자신 1개뿐이므로

u_pct= 1/10 ​=  0.10


최근 10개의 dTEI가 아래였다고 가정(현재 포함):


dTEI는 최근도 거의 0이라고 보면 “현재값(0) 이하 또는 같은 값(”0“)의 갯수가” 이 10이 되어

d_pct= 10/10 = 1.00



abs_pct도 같은 방식으로 산정합니다

(즉  현재 abs값보다 작거나 같은 갯수를 산정하고, 전체 산정기간으로 나눈다)


상기 예제에서는 abs는 u와 같으니

abs_pct=0.10


최종값

u_pct=0.10

d_pct=1.00

abs_pct=0.10


과매수구간 : 80 라인 형성

과매도구간 : 20라인 형성

중간 : 50라인 형성



항상 도움을 주셔서 감사를 드립니다


지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-21 17:00:48

안녕하세요 예스스탁입니다. input : N(14),P(10); var : diff(0),순상승(0),순하락(0); var : uTEI_raw(0),dTEI_raw(0); var : alpha(0),uTEI(0),dTEI(0),absv(0),i(0); var : u_pct(0),d_pct(0),abs_pct(0); diff = abs(C-C[1]); 순상승=max(C-C[N],0); 순하락=max(C[N]-C,0); uTEI_raw = 순상승/AccumN(diff,N); dTEI_raw = 순하락/AccumN(diff,N); alpha = 1/(N+1); uTEI = iff(isnan(uTEI)==true,0,uTEI) + alpha*(uTEI_raw-iff(isnan(uTEI)==true,0,uTEI)); dTEI = iff(isnan(dTEI)==true,0,dTEI) + alpha*(dTEI_raw-iff(isnan(dTEI)==true,0,dTEI)); absv = max(uTEI, dTEI); var1 = 0; var2 = 0; var3 = 0; For i = 0 to P-1 { if uTEI[i] <= uTEI Then var1 = var1+1; if dTEI[i] <= dTEI Then var2 = var2+1; if absv[i] <= absv Then var3 = var3+1; } u_pct = var1/P*100; d_pct = var2/P*100; abs_pct = var3/P*100; plot3(u_pct); plot4(d_pct); plot5(abs_pct); PlotBaseLine1(20); PlotBaseLine2(50); PlotBaseLine3(80); 즐거운 하루되세요