커뮤니티

질문 부탁드립니다

프로필 이미지
yamu
2025-05-20 07:48:26
191
글번호 190964
답변완료
지난 답변 적용하면서 궁금한 사항 몇 가지가 있어서 여쭤보고 싶습니다 질문1) tl_getvalue 관련인데요 식에서 var22 가 의미하는건, 현재봉 시작점에서의 추세선 값을 의미하는게 맞지 않나요?~ 아래 식에서 (분봉에서 보고있을때) tttl1[0] 의 끝점을 sd[0],st[0] 이나 sd[1],sd[1] 와 같이 가장 최근만족봉과 가까운 지점으로 설정했을때는 var22 의 값 (Var22=TL_GetValue(tttl1[0],sDate,sTime);) 이 제대로 나오는데 끝점을 sd[5],st[5] (시작점은 이보다 더 과거) 처럼 더 과거의 시점으로 했을때는 var22 값에 오차가 생기는 현상이 발생합니다. 즉 var22 값과 현재봉 시작점에서의 추세선 값을 비교해봤을때 간극이 생깁니다. 혹시 조건 if 문에서 and (d1 == 0 or (d1 > 0 and dd >= d1+5)) 이 부분과 관련이 있는 현상일까요?? 아니면 분봉에서 적용한것과 관련이 있을까요? 질문2) 추세선간의 crossup 관련 이해가 어려운 부분이 있습니다 crossup(h,ma(c,20))이 "한봉전의 h값이 한봉전 ma 값보다는 작고, 현재 h가 ma 보다 크다" 라는 의미처럼 CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) 이 의미하는건, 이전 조건만족봉 위치에서의 tttl1[1] 이 tttl1[0] 보다 작고, 현재 만족봉에서의 tttl1[1] 이 tttl1[0] 보다 크다라는 의미로 이해하는게 맞나요? 즉 현재만족봉 시점에서 봤을때 tttl1[2] < tttl1[1] 이고 tttl1[1] > tttl1[0] 이라는 의미가 되는건가요? 아니면 단순히 현재만족봉기준 한봉전과 비교하는건가요?? 해석을 도와주셨으면 합니다 그리고 Var22=TL_GetValue(tttl1[0],sDate,sTime); if CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) Then var11 = TL_GetValue(tttl1[0],sDate,sTime); 이렇게 작성했을때 crossup 조건이 만족했을때 var11 에는 어떤 값이 들어가게 되며 var22 와는 어떻게 달라지는건지도 해석이 궁금합니다. 감사합니다 아래는 수식입니다 var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0),ae(0); var: sum2(0),sumi2(0),count(0),sumaa(0),sumai(0),avgaa(0); var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),e1(0),e2(0); Array : ii[50](0),aa[50](0),cc[50](0),ee[50](0),ttl[30](0),txtt[40](0), tttl1[40](0),tttl2[40](0),sd[45](0),st[45](0),ad[50](0),at[50](0); if Bdate != Bdate[1] Then { DD = DD+1; } if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then { d1 = dd; hh = h; var1 = Index; Var2 = var1[1]; Var3 = Var2[1]; sum1=0; sumi1=0; sum2=0; sumi2=0; tl=TL_NEW(sDate,sTime,100,sDate,sTime,999999); TL_SetSize(tl,0); TL_SetColor(tl,Gray); For cnt = 1 to (var1-Var2) { sum1=sum1+l[cnt]; sumi1=sumi1+1; } value1=sum1/sumi1; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; sd[cnt] =sd[cnt-1]; st[cnt] =st[cnt-1]; txtt[cnt] = txtt[cnt-1]; tttl1[cnt]=tttl1[cnt-1]; tttl2[cnt]=tttl2[cnt-1]; } aa[0] = value1; sd[0] = sDate; st[0] = sTime; TL_SetExtRight( tttl1[3],False); tttl1[0] = TL_New(sd[5],st[5],aa[5],sd[3],st[3],aa[3]); TL_SetDrawMode( tttl1[0],0); TL_Delete( tttl1[3]); TL_SetExtRight( tttl1[0],true); TL_SetColor(tttl1[0],Black); TL_SetColor(tttl1[3],Green); TL_SetSize( tttl1[0],0); TL_SetSize( tttl1[3],1); Var22=TL_GetValue(tttl1[0],sDate,sTime); if CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) Then var11 = TL_GetValue(tttl1[0],sDate,sTime); txtt[0]=text_new(sd[0],st[0],aa[0],NumToStr(Var22,0)+" "+ NumToStr((aa[0]-aa[1])/aa[1]*100,0)+"%"); Text_SetSize(txtt[0],15); Text_SetBold(txtt[0],1); Text_SetStyle(txtt[0], 0, 0); } if aa[0] >0 then Plot11(aa[0],"average",Cyan,Def,1);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-20 09:53:08

안녕하세요 예스스탁입니다. 1 tl_getvalue는 봉완성시 지정한 추세선의 최종값(종가시점)입니다. 현재시점에 지정한 아이디의 추세선이 없으면 우측연장을 내부적으로 하고 그값을 리턴해 주게 됩니다. 해당 함수는 단지 추세선의 현재봉값을 리턴하므로 if문이나 차트 주기와는 관계가 없습니다. 해당 함수는 해당봉에서 실제 그어졌던 지정한 추세선의 값이 리턴됩니다. 현재봉시점에서 과거봉에 그린 추세선 값이 과거봉에서 리턴되는 것이 아닙니다. 2 CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) 을 풀어서 작성하면 아래와 같습니다. TL_GetValue(tttl1[1],sDate,sTime) > TL_GetValue(tttl1[0],sDate,sTime) and TL_GetValue(tttl1[1],sDate,sTime)[1] <= TL_GetValue(tttl1[0],sDate,sTime)[1] tttl1[1]추세선의 현재봉값이 tttl1[0]추세선의 현재봉값보다 크고 전봉에서는 tttl1[1]추세선값이 tttl1[0]추세선값보다 같거나 작다입니다. 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 질문 부탁드립니다 > 지난 답변 적용하면서 궁금한 사항 몇 가지가 있어서 여쭤보고 싶습니다 질문1) tl_getvalue 관련인데요 식에서 var22 가 의미하는건, 현재봉 시작점에서의 추세선 값을 의미하는게 맞지 않나요?~ 아래 식에서 (분봉에서 보고있을때) tttl1[0] 의 끝점을 sd[0],st[0] 이나 sd[1],sd[1] 와 같이 가장 최근만족봉과 가까운 지점으로 설정했을때는 var22 의 값 (Var22=TL_GetValue(tttl1[0],sDate,sTime);) 이 제대로 나오는데 끝점을 sd[5],st[5] (시작점은 이보다 더 과거) 처럼 더 과거의 시점으로 했을때는 var22 값에 오차가 생기는 현상이 발생합니다. 즉 var22 값과 현재봉 시작점에서의 추세선 값을 비교해봤을때 간극이 생깁니다. 혹시 조건 if 문에서 and (d1 == 0 or (d1 > 0 and dd >= d1+5)) 이 부분과 관련이 있는 현상일까요?? 아니면 분봉에서 적용한것과 관련이 있을까요? 질문2) 추세선간의 crossup 관련 이해가 어려운 부분이 있습니다 crossup(h,ma(c,20))이 "한봉전의 h값이 한봉전 ma 값보다는 작고, 현재 h가 ma 보다 크다" 라는 의미처럼 CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) 이 의미하는건, 이전 조건만족봉 위치에서의 tttl1[1] 이 tttl1[0] 보다 작고, 현재 만족봉에서의 tttl1[1] 이 tttl1[0] 보다 크다라는 의미로 이해하는게 맞나요? 즉 현재만족봉 시점에서 봤을때 tttl1[2] < tttl1[1] 이고 tttl1[1] > tttl1[0] 이라는 의미가 되는건가요? 아니면 단순히 현재만족봉기준 한봉전과 비교하는건가요?? 해석을 도와주셨으면 합니다 그리고 Var22=TL_GetValue(tttl1[0],sDate,sTime); if CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) Then var11 = TL_GetValue(tttl1[0],sDate,sTime); 이렇게 작성했을때 crossup 조건이 만족했을때 var11 에는 어떤 값이 들어가게 되며 var22 와는 어떻게 달라지는건지도 해석이 궁금합니다. 감사합니다 아래는 수식입니다 var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0),ae(0); var: sum2(0),sumi2(0),count(0),sumaa(0),sumai(0),avgaa(0); var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),e1(0),e2(0); Array : ii[50](0),aa[50](0),cc[50](0),ee[50](0),ttl[30](0),txtt[40](0), tttl1[40](0),tttl2[40](0),sd[45](0),st[45](0),ad[50](0),at[50](0); if Bdate != Bdate[1] Then { DD = DD+1; } if (h>l*1.08) and (d1 == 0 or (d1 > 0 and dd >= d1+5)) Then { d1 = dd; hh = h; var1 = Index; Var2 = var1[1]; Var3 = Var2[1]; sum1=0; sumi1=0; sum2=0; sumi2=0; tl=TL_NEW(sDate,sTime,100,sDate,sTime,999999); TL_SetSize(tl,0); TL_SetColor(tl,Gray); For cnt = 1 to (var1-Var2) { sum1=sum1+l[cnt]; sumi1=sumi1+1; } value1=sum1/sumi1; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; sd[cnt] =sd[cnt-1]; st[cnt] =st[cnt-1]; txtt[cnt] = txtt[cnt-1]; tttl1[cnt]=tttl1[cnt-1]; tttl2[cnt]=tttl2[cnt-1]; } aa[0] = value1; sd[0] = sDate; st[0] = sTime; TL_SetExtRight( tttl1[3],False); tttl1[0] = TL_New(sd[5],st[5],aa[5],sd[3],st[3],aa[3]); TL_SetDrawMode( tttl1[0],0); TL_Delete( tttl1[3]); TL_SetExtRight( tttl1[0],true); TL_SetColor(tttl1[0],Black); TL_SetColor(tttl1[3],Green); TL_SetSize( tttl1[0],0); TL_SetSize( tttl1[3],1); Var22=TL_GetValue(tttl1[0],sDate,sTime); if CrossUp(TL_GetValue(tttl1[1],sDate,sTime),TL_GetValue(tttl1[0],sDate,sTime)) Then var11 = TL_GetValue(tttl1[0],sDate,sTime); txtt[0]=text_new(sd[0],st[0],aa[0],NumToStr(Var22,0)+" "+ NumToStr((aa[0]-aa[1])/aa[1]*100,0)+"%"); Text_SetSize(txtt[0],15); Text_SetBold(txtt[0],1); Text_SetStyle(txtt[0], 0, 0); } if aa[0] >0 then Plot11(aa[0],"average",Cyan,Def,1);