첨부 이미지
그림1
안녕하세요. 시스템 트레이딩을 시작한지 얼마되지 않아 홈페이지에 있는 매뉴얼을 열심히 공부하며 익히고 있습니다. 그러던 중 혼자서 며칠을 보고 또 보고 하였지만 이해가 되지 않는 부분이 있어 질문 드립니다.
배열에서 array 선언 부분에 붙임과 같은 지표식 예시가 있습니다. 지표식 하단에 있는 'timetominutes(stime)%분단위' 해설을 통해 대부분은 이해가 되었으나, 'dayindex == 0'이 필요한 이유를 이해하지 못하였습니다. 실제로 이 부분을 삭제하고 실행하니 00:00분에 고가가 변경이 되는게 아니라 00:01분에 변경이 되는 것을 확인하였습니다. 아마 그 때문에 'dayindex == 0'이 사용되는 것으로 보이는데, timetominutes(stime)%분단위 함수가 왜 00:00에만 적용되지 않는 메커니즘을 알고 싶습니다.
너무나 좋은 프로그램을 왜 이렇게 늦게 접했을까 요즘 스스로를 원망하며 밤잠 줄여가며 익혀나가고 있습니다. 감사합니다.
답변 2
예스스탁
예스스탁 답변
2020-07-23 16:50:15
안녕하세요
예스스탁입니다.
1
랭귀지에서 시간은 stime(시작시간), time(끝시간),NextbarStime(다음봉시가)이 있습니다.
봉완성이 다음봉시가가 수신될때이므로 3가지 시간을 사용할수 있습니다.
올려주신 수식에서는 TimeToMinutes(stime)은 봉의 시작시간을 기준으로 계산하므로
차트에서 표시시간과 차이가 있게 됩니다.
해외선물은 봉의 시간이 해당봉이 완성되는(다음봉시가) 시간입니다.
plot1(stime);
plot2(time);
plot3(NextbarStime);
위 내용을 지표로 작성해 비교해 보시기 바랍니다.
혹은 아래 지표로 차이를 보셔도 됩니다.
plot1(TimeToMinutes(stime));
plot2(TimeToMinutes(time));
plot2(TimeToMinutes(NextbarStime));
2
해당식은 오래전 국내 종목에 맞춰져서 예제를 만든 부분이라
해외선물등 24시간 거래종목에는 조금 다르게 작성하셔야 합니다.
dayindex == 0 대신에 bdate != bdate[1]를 사용하셔야 합니다.
dayindex가 0시 기준으로 당일봉을 카운트하므로
국내종목에 사용에는 문제가 없지만 0시가 영업일 변경이 아닌 해외선물에서는
영업일(bdate) 변경을 기준으로 체크되어야 합니다.
현재는 국내/해외 공통으로 bdate != bdate[1]로 날짜 변경을 체크합니다.
3
국내 1분봉으로 예를 들어 드리면
전일 15시 30분까지만 거래가 있다가 당일 거래가 별로 없어 첫봉이 9시 40분에 첫봉이 만들어 지면
timetominutes(stime)%60값이
30 -> 40이 되어 Frame < frame[1]조건에 충족하지 못하게 됩니다.
날짜가 변경되었음에도 불구하고 값 초기화가 안되는 것을 막기 위해
첫봉을 의미하는 내용이 추가되어 있었습니다.
4
또한 좀더 확장해서 장중에도 거래가 없어 지정한 60분을 넘어서 봉이 생기는 경우도 있으므로
전봉대비 60분 이상 경과한 경우에도 초기화하는 내용을 넣어주어야 합니다.
Frame = TimeToMinutes(stime)%60;
If (bdate != bdate[1]) or
(Bdate == Bdate[1] and Frame < Frame[1]) or
(Bdate == Bdate[1] and TimeToMinutes(stime) >= TimeToMinutes(stime)+60) Then
Hval = H;
즐거운 하루되세요
> traderk 님이 쓴 글입니다.
> 제목 : 예스 랭귀지 매뉴얼에서 지표식(array 부분) 해설 부탁드립니다.
> 안녕하세요. 시스템 트레이딩을 시작한지 얼마되지 않아 홈페이지에 있는 매뉴얼을 열심히 공부하며 익히고 있습니다. 그러던 중 혼자서 며칠을 보고 또 보고 하였지만 이해가 되지 않는 부분이 있어 질문 드립니다.
배열에서 array 선언 부분에 붙임과 같은 지표식 예시가 있습니다. 지표식 하단에 있는 'timetominutes(stime)%분단위' 해설을 통해 대부분은 이해가 되었으나, 'dayindex == 0'이 필요한 이유를 이해하지 못하였습니다. 실제로 이 부분을 삭제하고 실행하니 00:00분에 고가가 변경이 되는게 아니라 00:01분에 변경이 되는 것을 확인하였습니다. 아마 그 때문에 'dayindex == 0'이 사용되는 것으로 보이는데, timetominutes(stime)%분단위 함수가 왜 00:00에만 적용되지 않는 메커니즘을 알고 싶습니다.
너무나 좋은 프로그램을 왜 이렇게 늦게 접했을까 요즘 스스로를 원망하며 밤잠 줄여가며 익혀나가고 있습니다. 감사합니다.
traderk
2020-07-23 17:20:35
.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 예스 랭귀지 매뉴얼에서 지표식(array 부분) 해설 부탁드립니다.
> 안녕하세요
예스스탁입니다.
1
랭귀지에서 시간은 stime(시작시간), time(끝시간),NextbarStime(다음봉시가)이 있습니다.
봉완성이 다음봉시가가 수신될때이므로 3가지 시간을 사용할수 있습니다.
올려주신 수식에서는 TimeToMinutes(stime)은 봉의 시작시간을 기준으로 계산하므로
차트에서 표시시간과 차이가 있게 됩니다.
해외선물은 봉의 시간이 해당봉이 완성되는(다음봉시가) 시간입니다.
plot1(stime);
plot2(time);
plot3(NextbarStime);
위 내용을 지표로 작성해 비교해 보시기 바랍니다.
혹은 아래 지표로 차이를 보셔도 됩니다.
plot1(TimeToMinutes(stime));
plot2(TimeToMinutes(time));
plot2(TimeToMinutes(NextbarStime));
2
해당식은 오래전 국내 종목에 맞춰져서 예제를 만든 부분이라
해외선물등 24시간 거래종목에는 조금 다르게 작성하셔야 합니다.
dayindex == 0 대신에 bdate != bdate[1]를 사용하셔야 합니다.
dayindex가 0시 기준으로 당일봉을 카운트하므로
국내종목에 사용에는 문제가 없지만 0시가 영업일 변경이 아닌 해외선물에서는
영업일(bdate) 변경을 기준으로 체크되어야 합니다.
현재는 국내/해외 공통으로 bdate != bdate[1]로 날짜 변경을 체크합니다.
3
국내 1분봉으로 예를 들어 드리면
전일 15시 30분까지만 거래가 있다가 당일 거래가 별로 없어 첫봉이 9시 40분에 첫봉이 만들어 지면
timetominutes(stime)%60값이
30 -> 40이 되어 Frame < frame[1]조건에 충족하지 못하게 됩니다.
날짜가 변경되었음에도 불구하고 값 초기화가 안되는 것을 막기 위해
첫봉을 의미하는 내용이 추가되어 있었습니다.
4
또한 좀더 확장해서 장중에도 거래가 없어 지정한 60분을 넘어서 봉이 생기는 경우도 있으므로
전봉대비 60분 이상 경과한 경우에도 초기화하는 내용을 넣어주어야 합니다.
Frame = TimeToMinutes(stime)%60;
If (bdate != bdate[1]) or
(Bdate == Bdate[1] and Frame < Frame[1]) or
(Bdate == Bdate[1] and TimeToMinutes(stime) >= TimeToMinutes(stime)+60) Then
Hval = H;
즐거운 하루되세요
> traderk 님이 쓴 글입니다.
> 제목 : 예스 랭귀지 매뉴얼에서 지표식(array 부분) 해설 부탁드립니다.
> 안녕하세요. 시스템 트레이딩을 시작한지 얼마되지 않아 홈페이지에 있는 매뉴얼을 열심히 공부하며 익히고 있습니다. 그러던 중 혼자서 며칠을 보고 또 보고 하였지만 이해가 되지 않는 부분이 있어 질문 드립니다.
배열에서 array 선언 부분에 붙임과 같은 지표식 예시가 있습니다. 지표식 하단에 있는 'timetominutes(stime)%분단위' 해설을 통해 대부분은 이해가 되었으나, 'dayindex == 0'이 필요한 이유를 이해하지 못하였습니다. 실제로 이 부분을 삭제하고 실행하니 00:00분에 고가가 변경이 되는게 아니라 00:01분에 변경이 되는 것을 확인하였습니다. 아마 그 때문에 'dayindex == 0'이 사용되는 것으로 보이는데, timetominutes(stime)%분단위 함수가 왜 00:00에만 적용되지 않는 메커니즘을 알고 싶습니다.
너무나 좋은 프로그램을 왜 이렇게 늦게 접했을까 요즘 스스로를 원망하며 밤잠 줄여가며 익혀나가고 있습니다. 감사합니다.