예스스탁
예스스탁 답변
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);
}
=============================================