커뮤니티

문의 드립니다

프로필 이미지
동해바다01
2025-01-31 11:08:44
422
글번호 187588
답변완료
안녕하세요 새해 복 많이 받으시기 바랍니다. 응답해 주신 지난 아래 수식에서 지표속성창에서 선 굵기와 지표선 값을 표시하도록 체크를 해도 전혀 반응이 없습니다. 지표선 값을 알고싶습니다. 윗쪽 밴드선 값은 선 위에 아래쪽 밴드선 값은 선 아래에 표시해 주실 수 있는지요 감사합니다 ====================================== input : hh(8),mult(3),repaint(true),upCss(red),dnCss(blue); var : n(0),src(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); src = close; 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 and repaint == true 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) { uptx[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"-"); Text_SetColor(uptx[i],upcss); Text_SetStyle(uptx[i],2,2); dntx[i] = text_new(sDate[i],sTime[i],nwe[i]-sae,"-"); Text_SetColor(dntx[i],dncss); Text_SetStyle(dntx[i],2,2); y1 = nwe[i]; } } if repaint == False Then { plot1(out + mae, "Upper", upCss); plot2(out - mae, "Lower", dnCss); } =============================================
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-02-03 09:08:06

안녕하세요 예스스탁입니다. 해당수식은 현재봉 기준으로 과거봉에 그려야 하는 내용이라 plot을 사용할 수 없어 텍스트함수로 과거봉에 특수문자인 "-" 그려져 있습니다. 텍스트라 별도로 굵기를 지정할 수 없어 추세선으로 변경해 드립니다;. 외부변수에서 굵기 지정하시면 되며, 색상도 upCss, dnCss로 지정하셔야 합니다. input : hh(8),mult(3),repaint(true),upCss(red),dnCss(blue),굵기(1); var : n(0),src(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); src = close; 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 and repaint == true Then { for i = 0 to min(499,n - 1) { nwe[i] = 0; TL_Delete(uptx[i]); TL_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 == 0 Then uptx[i] = TL_new(sDate[i],sTime[i],nwe[i]+sae,NextBarSdate[i],NextBarStime[i],nwe[i]+sae); Else uptx[i] = TL_new(sDate[i],sTime[i],nwe[i]+sae,Sdate[i-1],Stime[i-1],nwe[i]+sae); TL_SetColor(uptx[i],upcss); TL_SetSize(uptx[i],굵기); uptx1[i] = Text_New(sDate[i],sTime[i],nwe[i]+sae,NumToStr(nwe[i]+sae,2)); Text_SetStyle(uptx1[i],2,1); Text_SetSize(uptx1[i],10); if i == 0 Then dntx[i] = TL_new(sDate[i],sTime[i],nwe[i]-sae,NextBarSdate,NextBarStime,nwe[i]-sae); Else dntx[i] = TL_new(sDate[i],sTime[i],nwe[i]-sae,Sdate[i-1],Stime[i-1],nwe[i]-sae); TL_SetColor(dntx[i],dncss); TL_SetSize(dntx[i],굵기); dntx1[i] = Text_New(sDate[i],sTime[i],nwe[i]-sae,NumToStr(nwe[i]-sae,2)); Text_SetStyle(dntx1[i],2,0); Text_SetSize(dntx1[i],10); y1 = nwe[i]; } } if repaint == False Then { plot1(out + mae, "Upper", upCss); plot2(out - mae, "Lower", dnCss); } 즐거운 하루되세요 > 동해바다01 님이 쓴 글입니다. > 제목 : 문의 드립니다 > 안녕하세요 새해 복 많이 받으시기 바랍니다. 응답해 주신 지난 아래 수식에서 지표속성창에서 선 굵기와 지표선 값을 표시하도록 체크를 해도 전혀 반응이 없습니다. 지표선 값을 알고싶습니다. 윗쪽 밴드선 값은 선 위에 아래쪽 밴드선 값은 선 아래에 표시해 주실 수 있는지요 감사합니다 ====================================== input : hh(8),mult(3),repaint(true),upCss(red),dnCss(blue); var : n(0),src(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); src = close; 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 and repaint == true 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) { uptx[i] = text_new(sDate[i],sTime[i],nwe[i]+sae,"-"); Text_SetColor(uptx[i],upcss); Text_SetStyle(uptx[i],2,2); dntx[i] = text_new(sDate[i],sTime[i],nwe[i]-sae,"-"); Text_SetColor(dntx[i],dncss); Text_SetStyle(dntx[i],2,2); y1 = nwe[i]; } } if repaint == False Then { plot1(out + mae, "Upper", upCss); plot2(out - mae, "Lower", dnCss); } =============================================