예스스탁
예스스탁 답변
2025-04-21 14:57:17
안녕하세요
예스스탁입니다.
올리신 내용이면 새로운 조건만족봉이 나오면 과거로 가면서 그려야 하므로
과거봉에 그려진 추세선은 모두 삭제를 하고 다시 그려야 합니다.
무한정 그릴수 없으므로 각 값은 100개까지 저장하고
최대 조건만족봉 100개기준으로 그려지게 작성해 드립니다.
아래 내용 참고하시기 바랍니다.
var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0);
var: sum2(0),sumi2(0),sumaa(0);
var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),ee(0),e1(0),e2(0);
Array : ii[50](0),aa[50](0),cc[50](0),vv[150](0),ttl[30](0),tttl[40](0),tttl1[40](0),tttl2[40](0),sd[45](0),st[45](0);
var : sum(0),YY(0),XX(0),diff(0);
Array : A[100](0),D[100](0),S[100](0),ZZ[100](0);
Var33=Money/100000000;
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
#H>vi(1)*0.95 h>l*1.07 CrossUp(h,ma(h,240))
if h>l*1.08 Then
{
d1 = dd;
d2 = d1[1];
if d2 == 0 or (d2 > 0 and d1 >= d2+5) Then
{
var1 = Index;
Var2 = var1[1];
Var3= Var2[1];
tl=TL_NEW(sDatE,sTimE,100,sDatE,sTimE,999999);
TL_SetSize(tl,0);
TL_SetColor(tl,Black);
}
For cnt = 99 DownTo 1
{
A[cnt] = A[cnt-1];
D[cnt] = D[cnt-1];
S[cnt] = S[cnt-1];
}
A[0] = DD;
D[0] = sdate;
S[0] = sTime;
For cnt = 0 to 99
{
TL_Delete(ZZ[cnt]);
}
sum = 0;
YY = A[0];
XX = 0;
For cnt = 1 to 99
{
diff = A[cnt]-YY;
sum = sum + diff;
if sum > 5 Then
{
XX = XX+1;
ZZ[XX] =TL_NEW(D[cnt],S[cnt],100,D[cnt],S[cnt],999999);
sum = 0;
YY = A[cnt];
}
}
}
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 질문드리겠습니다
> 안녕하세요
아래 수식은 조건만족봉 사이가 5거래일 이상 차이가 날때 (조건A) 만 tl을 표시하게 했는데요
제가 원하는건
가장 최근만족봉 기준으로 이전만족봉들을 누적 계산해서 5거래일 차이가 날때 추세선 표시를 하고자 합니다
예를들어서 조건문을 배열함수 A 에 넣었을때, 가장 최근봉이 A[0]이고 A[1] 이 1일전에 나오고, A[2]가 2일전, A[3] 가 3일전에 나왔다면 모두 합산을 해서 6일전에 나왔으니 A[3] 에만 표시를 하고, A[3]를 기준으로 다시 계산을 해서 반복을 하고자 합니다.
이런식으로 "가장 최근봉만" 가지고 5거래일 차이가 나는 경우들을 if문, 혹은 새로운 배열 변수에 대입해서 구현 가능하지 않는지 궁금합니다..
** 이 방식이 안된다면 단순히 5거래일에 한번씩 나오게 부탁드립니다
아래는 작성한 수식인데 수정을 부탁드립니다
감사합니다
var : cnt(0), sum1(0), sumi1(0),summ(0),tt(0),hh(0),ll(0),tl(0),tl1(0),n(0);
var: sum2(0),sumi2(0),sumaa(0);
var : t(0),StartBarIndex(0),dd(0),d1(0),d2(0),ee(0),e1(0),e2(0);
Array : ii[50](0),aa[50](0),cc[50](0),vv[150](0),ttl[30](0),tttl[40](0),tttl1[40](0),tttl2[40](0),sd[45](0),st[45
](0);
Var33=Money/100000000;
if Bdate != Bdate[1] Then
{
DD = DD+1;
}
#H>vi(1)*0.95 h>l*1.07 CrossUp(h,ma(h,240))
if h>l*1.08 Then
{
d1 = dd;
d2 = d1[1];
if d2 == 0 or (d2 > 0 and d1 >= d2+5) Then
{
var1 = Index;
Var2 = var1[1];
Var3= Var2[1];
tl=TL_NEW(sDatE,sTimE,100,sDatE,sTimE,999999);
TL_SetSize(tl,0);
TL_SetColor(tl,Black);
}
}