커뮤니티

지정한 시간까지 선을 그리고 싶습니다.

프로필 이미지
예스쟁이
2023-08-09 14:56:01
1322
글번호 171359
답변완료

첨부 이미지

항상 도움에 감사드립니다. 아래와 같은 코드를 실행하면 첨부파일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]); } } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

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]); } } }