예스스탁
예스스탁 답변
2023-08-09 16:03:37
안녕하세요
예스스탁입니다.
현재 tcond가 true인 구간에서 선이 그려지고 있습니다.
if Bdate != Bdate[1] Then
Tcond = False;
tcond는 영엽일이 변경되면 false가 되므로
해당 부분을 특정시간으로 변경하시면 됩니다.
input : ntime(210000),xtime(053000),line_num(8), size_tick(16);
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);
oo = o;
if (sdate != sdate[1] and stime >= xtime) or
(sdate == sdate[1] and stime >= xtime and stime[1] < xtime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
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[k] Then
{
up_T[k] = k;
up_touch[k] = up_touch[k] + 1;
}
if L <= dn_line[k] Then
{
dn_T[k] = -k;
dn_touch[k] = dn_touch[k] + 1;
}
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));
}
}
Else
{
if Tcond == true Then
{
For k = 1 to line_num
{
TL_SetEnd(up_TL[k],NextBarSdate,NextBarStime,up_line[k]);
TL_SetEnd(dn_TL[k],NextBarSdate,NextBarStime,dn_line[k]);
}
}
}
즐거운 하루되세요
> 예스쟁이 님이 쓴 글입니다.
> 제목 : 지정한 시간까지 선을 그리고 싶습니다.
> 항상 도움에 감사드립니다.
아래와 같은 코드를 실행하면
첨부파일1과같은 선이 그어지는데요.
선은 ntime 부터 그날 장이 끝나는 시간까지 그어지는데요.
input : ntime(210000), line_num(8), size_tick(16);
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);
oo = o;
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
{
Tcond = true;
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[k] Then
{
up_T[k] = k;
up_touch[k] = up_touch[k] + 1;
}
if L <= dn_line[k] Then
{
dn_T[k] = -k;
dn_touch[k] = dn_touch[k] + 1;
}
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));
}
}
Else
{
if Tcond == true Then
{
For k = 1 to line_num
{
TL_SetEnd(up_TL[k],NextBarSdate,NextBarStime,up_line[k]);
TL_SetEnd(dn_TL[k],NextBarSdate,NextBarStime,dn_line[k]);
}
}
}
------------------------------------------------------
선이 그려지는 시간이 장이 끝나는 시간까지가 아닌
장이 끝나기 전, 지정한 시간까지 그어지게 하고 싶어서
아래와 같이
endtime(230000) 변수를 추가하고
(ex) 23시 또는 새벽 1시까지)
else 이후 부분을
stime <= endtime 추가해서 수정해 봤는데
적용이 되지 않네요.
도움 부탁드립니다.
input : ntime(210000), endtime(230000), line_num(8), size_tick(16);
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);
oo = o;
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
// 여긴 시작점 위치에 해당한다.
// 초반 캔들 부분에 해당되는 내용만 표시가 된다.
{
Tcond = true;
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[k] Then
{
up_T[k] = k;
up_touch[k] = up_touch[k] + 1;
}
if L <= dn_line[k] Then
{
dn_T[k] = -k;
dn_touch[k] = dn_touch[k] + 1;
}
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));
}
}
Else
{
if Tcond == true and stime <= endtime Then
{
For k = 1 to line_num
{
TL_SetEnd(up_TL[k],NextBarSdate,NextBarStime,up_line[k]);
TL_SetEnd(dn_TL[k],NextBarSdate,NextBarStime,dn_line[k]);
}
}
}