공부를 하다가 해석이 안되는 부분이 있어서 여쭤보고 싶습니다.
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
} }
수식중에서 위 수식처럼 for 문으로 cnt 하는 조건문에서 array 가 아닌 if ~ then 이 들어가는 조건문이 있는가 하면
input : N(5);
var : cnt(0),hh(0);
Array : HV[50](0);
if Bdate != Bdate[1] Then
{
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
}
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
Plot1(HV[0],"당일");
plot2(HH,"N일최고");
위 식처럼 배열로 cnt 하는 수식이 있는데 어떨때 쓰는건지 궁금합니다
그리고 위 수식의 내용은 아래와 같은데 해석을 좀 해주셨으면 합니다
특히
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
이부분이 잘 이해가 안갑니다 array 를 통해 무엇을 구하려는 것인지 궁금하며,
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
#이부분에서는 위의 array cnt 에서 구한 값과 어떤 관계인지요???
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
그리고 이 조건에서는 발생한 최대거래량을 구하고, 5일간의 최대치를 구하는 부분인데 어떤 원리인지 잘 모르겠습니다. 도와주세요
수식 조건:
분봉 차트에서,
수식1) 현재가가 전일종가 대비 -5% 이상, +20% 이하인 구간에서 당일발생 된 최대거래량.
수식2) 4일전, 3일전, 2일전, 1일전, 0일전에서 (총5일간) 가장 큰 수식1의 수치.
답변 2
예스스탁
예스스탁 답변
2024-08-19 18:55:24
안녕하세요
예스스탁입니다.
1
for문에 if문이 사용되는 경우는
값을 가져와 특정 조건의 값을 찾는 경우입니다.
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
}
올리신 위 수식과 같이 과거의 여러개의 값들 중에서 최고가나 최저가를
계산해야 하는데 그러기 위해서는 현재 호출할 값이 기존에 찾은 최고값(hh)이나 최저값(ll)보다 큰지 작은지 판단을 해야 합니다.
이렇게 비교하는 내용이 필요한 경우에는 if문이 같이 사용됩니다.
if Bdate != Bdate[1] Then
{
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
}
하지만 별도로 비교없이 배열의 값을
단지 다음배열방으로 옮기는 내용일때는 if문이 필요 없습니다.
위 내용에서 hv은 하루중 찾은 값이 들어가게 됩니다.
hv[0]에는 당일값, hv[1]은 전일값, hv[2]는 전전일 값 순으로 값이 저장되게 만든 내용입니다.
그러므로 날짜가 변경되면 기존 배열에 저장된 값을 다음방번호로 이관하는 작업을 하게 됩니다.
아래 주석 참고하시기 바랍니다.
input : N(5);
var : cnt(0),hh(0);
Array : HV[50](0);
#날짜가 변경되면
if Bdate != Bdate[1] Then
{
#배열의 기존 저장된 값을 다음방으로 보냄
#HV[49]번방에는 HV[48]번방 값을 가겨와저장
#HV[48]번방에는 HV[47]번방 값을 가겨와저장
#HV[47]번방에는 HV[46]번방 값을 가겨와저장
#....
#HV[3]번방에는 HV[2]번방 값을 가겨와저장
#HV[2]번방에는 HV[1]번방 값을 가겨와저장
#HV[1]번방에는 HV[0]번방 값을 가겨와저장
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
#HV[0]번방은 당일 새로 값을 넣어야 하므로 0으로 초기화
HV[0] = 0;
}
#전일종가대비 +20%~-5% 사이인 종가가 발생하면
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
#당일 첫발생이면 HV[0]은 0인 상태이므로 HV[0]에 현재봉 거래량 저장
#당일 두번째부터는 HV[0]에 거래량이 저장되어 0보다 큰값이므로 현재봉 거래량이 HV[0]에 저장된 값보다 크면 HV[0]에 현재봉 거래량 저장
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
}
#최근 N일의 HV값(N이 5이므로 HV[0]~HV[4]에 저장된 값) 중 #가장 큰값 저장
hh = 0;
For cnt = 0 to N-1
{
#hv[0]일때는 hh는 0이므로 그값을 hh에 저장
#hv[1]부터는 hh가 0보다 크므로 hv[cnt]가 hh보다 클때 저장
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
Plot1(HV[0],"당일");
plot2(HH,"N일최고");
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 수식 해석 관련해서 질문드립니다
> 공부를 하다가 해석이 안되는 부분이 있어서 여쭤보고 싶습니다.
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
} }
수식중에서 위 수식처럼 for 문으로 cnt 하는 조건문에서 array 가 아닌 if ~ then 이 들어가는 조건문이 있는가 하면
input : N(5);
var : cnt(0),hh(0);
Array : HV[50](0);
if Bdate != Bdate[1] Then
{
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
}
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
Plot1(HV[0],"당일");
plot2(HH,"N일최고");
위 식처럼 배열로 cnt 하는 수식이 있는데 어떨때 쓰는건지 궁금합니다
그리고 위 수식의 내용은 아래와 같은데 해석을 좀 해주셨으면 합니다
특히
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
이부분이 잘 이해가 안갑니다 array 를 통해 무엇을 구하려는 것인지 궁금하며,
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
#이부분에서는 위의 array cnt 에서 구한 값과 어떤 관계인지요???
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
그리고 이 조건에서는 발생한 최대거래량을 구하고, 5일간의 최대치를 구하는 부분인데 어떤 원리인지 잘 모르겠습니다. 도와주세요
수식 조건:
분봉 차트에서,
수식1) 현재가가 전일종가 대비 -5% 이상, +20% 이하인 구간에서 당일발생 된 최대거래량.
수식2) 4일전, 3일전, 2일전, 1일전, 0일전에서 (총5일간) 가장 큰 수식1의 수치.
매번 도와주셔서 감사드립니다!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 해석 관련해서 질문드립니다
> 안녕하세요
예스스탁입니다.
1
for문에 if문이 사용되는 경우는
값을 가져와 특정 조건의 값을 찾는 경우입니다.
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
}
올리신 위 수식과 같이 과거의 여러개의 값들 중에서 최고가나 최저가를
계산해야 하는데 그러기 위해서는 현재 호출할 값이 기존에 찾은 최고값(hh)이나 최저값(ll)보다 큰지 작은지 판단을 해야 합니다.
이렇게 비교하는 내용이 필요한 경우에는 if문이 같이 사용됩니다.
if Bdate != Bdate[1] Then
{
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
}
하지만 별도로 비교없이 배열의 값을
단지 다음배열방으로 옮기는 내용일때는 if문이 필요 없습니다.
위 내용에서 hv은 하루중 찾은 값이 들어가게 됩니다.
hv[0]에는 당일값, hv[1]은 전일값, hv[2]는 전전일 값 순으로 값이 저장되게 만든 내용입니다.
그러므로 날짜가 변경되면 기존 배열에 저장된 값을 다음방번호로 이관하는 작업을 하게 됩니다.
아래 주석 참고하시기 바랍니다.
input : N(5);
var : cnt(0),hh(0);
Array : HV[50](0);
#날짜가 변경되면
if Bdate != Bdate[1] Then
{
#배열의 기존 저장된 값을 다음방으로 보냄
#HV[49]번방에는 HV[48]번방 값을 가겨와저장
#HV[48]번방에는 HV[47]번방 값을 가겨와저장
#HV[47]번방에는 HV[46]번방 값을 가겨와저장
#....
#HV[3]번방에는 HV[2]번방 값을 가겨와저장
#HV[2]번방에는 HV[1]번방 값을 가겨와저장
#HV[1]번방에는 HV[0]번방 값을 가겨와저장
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
#HV[0]번방은 당일 새로 값을 넣어야 하므로 0으로 초기화
HV[0] = 0;
}
#전일종가대비 +20%~-5% 사이인 종가가 발생하면
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
#당일 첫발생이면 HV[0]은 0인 상태이므로 HV[0]에 현재봉 거래량 저장
#당일 두번째부터는 HV[0]에 거래량이 저장되어 0보다 큰값이므로 현재봉 거래량이 HV[0]에 저장된 값보다 크면 HV[0]에 현재봉 거래량 저장
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
}
#최근 N일의 HV값(N이 5이므로 HV[0]~HV[4]에 저장된 값) 중 #가장 큰값 저장
hh = 0;
For cnt = 0 to N-1
{
#hv[0]일때는 hh는 0이므로 그값을 hh에 저장
#hv[1]부터는 hh가 0보다 크므로 hv[cnt]가 hh보다 클때 저장
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
Plot1(HV[0],"당일");
plot2(HH,"N일최고");
즐거운 하루되세요
> yamu 님이 쓴 글입니다.
> 제목 : 수식 해석 관련해서 질문드립니다
> 공부를 하다가 해석이 안되는 부분이 있어서 여쭤보고 싶습니다.
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
} }
수식중에서 위 수식처럼 for 문으로 cnt 하는 조건문에서 array 가 아닌 if ~ then 이 들어가는 조건문이 있는가 하면
input : N(5);
var : cnt(0),hh(0);
Array : HV[50](0);
if Bdate != Bdate[1] Then
{
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
}
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
Plot1(HV[0],"당일");
plot2(HH,"N일최고");
위 식처럼 배열로 cnt 하는 수식이 있는데 어떨때 쓰는건지 궁금합니다
그리고 위 수식의 내용은 아래와 같은데 해석을 좀 해주셨으면 합니다
특히
For cnt = 49 DownTo 1
{
HV[cnt] = HV[cnt-1];
}
HV[0] = 0;
이부분이 잘 이해가 안갑니다 array 를 통해 무엇을 구하려는 것인지 궁금하며,
if DayClose(1)*1.2 >= C and C >= DayClose(1)*0.95 Then
{
if HV[0] == 0 or (HV[0] > 0 and V > HV[0]) Then
HV[0] = V;
#이부분에서는 위의 array cnt 에서 구한 값과 어떤 관계인지요???
}
hh = 0;
For cnt = 0 to N-1
{
if HV[cnt] > 0 and (hh == 0 or (hh > 0 and HV[cnt] > hh)) Then
hh = HV[cnt];
}
그리고 이 조건에서는 발생한 최대거래량을 구하고, 5일간의 최대치를 구하는 부분인데 어떤 원리인지 잘 모르겠습니다. 도와주세요
수식 조건:
분봉 차트에서,
수식1) 현재가가 전일종가 대비 -5% 이상, +20% 이하인 구간에서 당일발생 된 최대거래량.
수식2) 4일전, 3일전, 2일전, 1일전, 0일전에서 (총5일간) 가장 큰 수식1의 수치.