커뮤니티

문의드립니다.

프로필 이미지
해암
2025-10-13 13:42:32.0
42
글번호 194595
답변완료
지난번 답을 주셨던 다음의 수식에서 repainting smoothing 이 적용되지 않게 변경할 수 있을까요? 그리고 repainting smoothing을 적용하지 않으면 상하단밴드가 리페인팅할때보다 과거로 연장되어 나타날 수 있을까요? 부탁드립니다. 그리고 항상 감사합니다.!!! =================================== input : hh(8),mult(3),src(close),upCss(Teal),dnCss(Red); var : n(0),i(0),w(0),den(0),out(0),mae(0),upper(0),lower(0); Array : ln[500](0),coefs[500](0); Array : nwe[500](0),uptx[500](0),dntx[500](0),uptx1[500](0),dntx1[500](0); n = index; den = 0; for i = 0 to 499 { ln[i] = 0; w = exp(-(pow(i, 2)/(hh *hh * 2))); coefs[i] = w; den = den + coefs[i]; } out = 0; for i = 0 to 499 { out = out +(src[i] * coefs[i]); } out = out/den; mae = ma(abs(src - out), 499) * mult; upper = out + mae; lower = out - mae; var : sae(0),y2(0),y1(0),j(0); var : sum(0),sumw(0); if Index >= 500 Then { for i = 0 to min(499,n - 1) { nwe[i] = 0; Text_Delete(uptx[i]); Text_Delete(dntx[i]); Text_Delete(uptx1[i]); Text_Delete(dntx1[i]); } sae = 0; for i = 0 to min(499,n - 1) { sum = 0; sumw = 0; for j = 0 to min(499,n - 1) { w = exp(-(pow(i-j, 2)/(hh *hh * 2))); sum = sum + src[j] * w; sumw = sumw + w; } y2 = sum / sumw; sae = sae + abs(src[i] - y2); nwe[i] = y2; } sae = sae / min(499,n - 1) * mult; for i = 0 to min(499,n - 1) { if (i%2 == 0) Then { uptx[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"-"); Text_SetColor(uptx[i],upcss); dntx[i] = text_new(sDate[i],sTime[i],nwe[i]-sae,"-"); Text_SetColor(dntx[i],dncss); if src[i] > nwe[i] + sae and src[i+1] < nwe[i] + sae Then { dntx1[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"▼"); Text_SetColor(dntx1[i],dncss); } if src[i] < nwe[i] - sae and src[i+1] > nwe[i] - sae Then { uptx1[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"▲"); Text_SetColor(uptx1[i],upcss); } } y1 = nwe[i]; } } ============================= 수고하세요!!!
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-10-14 12:41:52.0

안녕하세요 예스스탁입니다. 아래와 같이 수식에 upper,lower값을 plot으로 출력해 보시면 됩니다. 차트에 최소 1000봉 이상 조회하고 적용하셔야 합니다. input : hh(8),mult(3),src(close),upCss(Teal),dnCss(Red); var : n(0),i(0),w(0),den(0),out(0),mae(0),upper(0),lower(0); Array : ln[500](0),coefs[500](0); Array : nwe[500](0),uptx[500](0),dntx[500](0),uptx1[500](0),dntx1[500](0); n = index; den = 0; for i = 0 to 499 { ln[i] = 0; w = exp(-(pow(i, 2)/(hh *hh * 2))); coefs[i] = w; den = den + coefs[i]; } out = 0; for i = 0 to 499 { out = out +(src[i] * coefs[i]); } out = out/den; mae = ma(abs(src - out), 499) * mult; upper = out + mae; lower = out - mae; Plot1(upper); plot2(lower); 즐거운 하루되세요 > 해암 님이 쓴 글입니다. > 제목 : 문의드립니다. > 지난번 답을 주셨던 다음의 수식에서 repainting smoothing 이 적용되지 않게 변경할 수 있을까요? 그리고 repainting smoothing을 적용하지 않으면 상하단밴드가 리페인팅할때보다 과거로 연장되어 나타날 수 있을까요? 부탁드립니다. 그리고 항상 감사합니다.!!! =================================== input : hh(8),mult(3),src(close),upCss(Teal),dnCss(Red); var : n(0),i(0),w(0),den(0),out(0),mae(0),upper(0),lower(0); Array : ln[500](0),coefs[500](0); Array : nwe[500](0),uptx[500](0),dntx[500](0),uptx1[500](0),dntx1[500](0); n = index; den = 0; for i = 0 to 499 { ln[i] = 0; w = exp(-(pow(i, 2)/(hh *hh * 2))); coefs[i] = w; den = den + coefs[i]; } out = 0; for i = 0 to 499 { out = out +(src[i] * coefs[i]); } out = out/den; mae = ma(abs(src - out), 499) * mult; upper = out + mae; lower = out - mae; var : sae(0),y2(0),y1(0),j(0); var : sum(0),sumw(0); if Index >= 500 Then { for i = 0 to min(499,n - 1) { nwe[i] = 0; Text_Delete(uptx[i]); Text_Delete(dntx[i]); Text_Delete(uptx1[i]); Text_Delete(dntx1[i]); } sae = 0; for i = 0 to min(499,n - 1) { sum = 0; sumw = 0; for j = 0 to min(499,n - 1) { w = exp(-(pow(i-j, 2)/(hh *hh * 2))); sum = sum + src[j] * w; sumw = sumw + w; } y2 = sum / sumw; sae = sae + abs(src[i] - y2); nwe[i] = y2; } sae = sae / min(499,n - 1) * mult; for i = 0 to min(499,n - 1) { if (i%2 == 0) Then { uptx[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"-"); Text_SetColor(uptx[i],upcss); dntx[i] = text_new(sDate[i],sTime[i],nwe[i]-sae,"-"); Text_SetColor(dntx[i],dncss); if src[i] > nwe[i] + sae and src[i+1] < nwe[i] + sae Then { dntx1[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"▼"); Text_SetColor(dntx1[i],dncss); } if src[i] < nwe[i] - sae and src[i+1] > nwe[i] - sae Then { uptx1[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"▲"); Text_SetColor(uptx1[i],upcss); } } y1 = nwe[i]; } } ============================= 수고하세요!!!