예스스탁
예스스탁 답변
2023-08-09 11:58:59
안녕하세요
예스스탁입니다.
2개의 식은 다른점이 없습니다.
if 내용도 for문으로 이상없이 변경되어 있습니다.
현재 2개식의 ntime이 다릅니다.
동일한 시간으로 지정하시면 동일하게 드려집니다.
즐거운 하루되세요
> 예스쟁이 님이 쓴 글입니다.
> 제목 : if 조건문 여러개를 for문으로 줄일 수 있나요?
> 아래와 같은 코드를 짰는데요.
input : ntime(210000), line_num(5), size_tick(8);
var : Tcond(False), oo(0), k(0);
array : up_line[20](0), dn_line[20](0), uptext[20](0), dntext[20](0);
array : up_touch[20](0), dn_touch[20](0), up_T[20](0), dn_T[20](0), up_TL[50](0), dn_TL[50](0);
if Bdate != Bdate[1] Then
Tcond = False;
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
oo = o;
For k = 1 to line_num
{
up_T[k] = 0;
dn_T[k] = 0;
up_line[k] = oo + PriceScale*size_tick*k;
dn_line[k] = oo - PriceScale*size_tick*k;
up_touch[k] = 0;
dn_touch[k] = 0;
up_TL[k] = TL_New(sDate,sTime,up_line[k],NextBarSdate,NextBarStime,up_line[k]); // 선긋기
dn_TL[k] = TL_New(sDate,sTime,dn_line[k],NextBarSdate,NextBarStime,dn_line[k]); // 선긋기
}
if H >= up_line[1] Then
{
up_T[1] = 1;
up_touch[1] = up_touch[1] + 1;
}
if H >= up_line[2] Then
{
up_T[2] = 2;
up_touch[2] = up_touch[2] + 1;
}
if H >= up_line[3] Then
{
up_T[3] = 3;
up_touch[3] = up_touch[3] + 1;
}
if H >= up_line[4] Then
{
up_T[4] = 4;
up_touch[4] = up_touch[4] + 1;
}
For k = 1 to line_num
{
uptext[k] = Text_New(NextBarSdate,NextBarStime,up_line[k],NumToStr(up_touch[k],0));
dntext[k] = Text_New(NextBarSdate,NextBarStime,dn_line[k],NumToStr(dn_touch[k],0));
}
}
------------------------------------------------------------------
이 코드를 실행하면
첨부파일1의 이미지와 같이 숫자가 표시 되는데요.
이것을 아래와 같이
if문들이 반복되어 for 문으로 바꿔봤는데요.
실행 결과가 다르게 나오는데요.
어디가 잘못됐는지 잘 모르겠습니다..
도움 부탁드립니다.
input : ntime(210900), line_num(4), size_tick(8);
var : Tcond(False), oo(0), k(0);
array : up_line[20](0), dn_line[20](0), uptext[20](0), dntext[20](0);
array : up_touch[20](0), dn_touch[20](0), up_T[20](0), dn_T[20](0), up_TL[50](0), dn_TL[50](0);
if Bdate != Bdate[1] Then
Tcond = False;
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
oo = o;
For k = 1 to line_num
{
up_T[k] = 0;
dn_T[k] = 0;
up_line[k] = oo + PriceScale*size_tick*k;
dn_line[k] = oo - PriceScale*size_tick*k;
up_touch[k] = 0;
dn_touch[k] = 0;
up_TL[k] = TL_New(sDate,sTime,up_line[k],NextBarSdate,NextBarStime,up_line[k]); // 선긋기
dn_TL[k] = TL_New(sDate,sTime,dn_line[k],NextBarSdate,NextBarStime,dn_line[k]); // 선긋기
}
For k = 1 to line_num
{
if H >= up_line[k] Then //CrossUp(h,uptt[1]) //H >= uptt[1]
{
up_T[k] = k;
up_touch[k] = up_touch[k] + 1;
}
}
For k = 1 to line_num
{
uptext[k] = Text_New(NextBarSdate,NextBarStime,up_line[k],NumToStr(up_touch[k],0));
dntext[k] = Text_New(NextBarSdate,NextBarStime,dn_line[k],NumToStr(dn_touch[k],0));
}
}