커뮤니티

NthHighestBar, NthLowestBar 질문

프로필 이미지
gutentak
2018-11-12 14:51:34
215
글번호 123573
답변완료
예를 들어 상장일이 60일이 안되는 종목의 경우 NthHighestBar, NthLowestBar 함수의 파라미터 중 기간에 60일 이상인 값을 넣어서 실행하면 결과 리턴여부 관계없이 종목검색결과에서 빠져버리는 문제가 있는 것 같습니다. 60일 중 허수봉이 포함되어있는 경우에도 검색자체가 안되는 것 같은데, 문제가 있는건지 아니면 달리 사용을 해야하는지 문의드립니다.
종목검색
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2018-11-13 11:49:05

안녕하세요 예스스탁입니다. 함수에 지정된 기간이 60봉이면 최소 60개 이상 봉수를 가지는 종목만 대상이 됩니다. 수식은 수식에서 사용하는 최소봉수(MaxBarsBack) 이상이 되어야 값을 계산할수 있습니다. 수식에 고정되어 60을 기간으로 사용하는 함수가 있으면 해당 수식의 계산에 필요환 최소봉수는 60개 이상이 됩니다. 60봉이 되지 않는 종목에 대해서도 해당함수의 값을 알고자 하시면 해당 함수를 그대로 사용하시면 안되고 별도로 풀어서 작성하셔야 합니다. 즉 수식에서 MaxBarsBack이 60으로 잡히지 않게 하면서 60봉 미만인 종목은 해당 봉수 안에서만 계산하고 60봉이 넘는 종목은 60봉 내에서만 계산하게 하셔야 합니다. 아래 내용 참고하시기 바랍니다. var : ll(0),hh(0),lb(0),hb(0),cnt(0); hh = h[0]; ll = l[0]; for cnt = 0 to index { if cnt < 60 and h[cnt] > hh Then { hh = h[cnt]; hb = cnt; } if cnt < 60 and l[cnt] < ll Then { ll = l[cnt]; lb = cnt; } if cnt > 60 Then cnt = index+1; } 즐거운 하루되세요 > gutentak 님이 쓴 글입니다. > 제목 : NthHighestBar, NthLowestBar 질문 > 예를 들어 상장일이 60일이 안되는 종목의 경우 NthHighestBar, NthLowestBar 함수의 파라미터 중 기간에 60일 이상인 값을 넣어서 실행하면 결과 리턴여부 관계없이 종목검색결과에서 빠져버리는 문제가 있는 것 같습니다. 60일 중 허수봉이 포함되어있는 경우에도 검색자체가 안되는 것 같은데, 문제가 있는건지 아니면 달리 사용을 해야하는지 문의드립니다.
프로필 이미지

gutentak

2018-11-16 16:45:10

답변은 잘 보았습니다만, 함수 내에서 기간체크를 하여 계산가능한 기간을 재산정해주어야 하는거 아닌가요? 수식 작성자가 함수와는 별개로 직접 허수봉, 또는 전체 봉수를 고려해야한다는 말씀이신데.. 상식적으로 이해가 안되네요.. 함수 수정을 해주실 필요가 있다고 봅니다. 확인 요청 하나 더 드리겠습니다. 2018.11.06 기준 오파스넷(173130) 일봉 차트를 보면 총 55개 봉이 있는데, 아래 2가지 방식으로 NthLowestBar 실행한 결과가 상이 합니다. 1. Var: Period(0); Period = 55; NthLowestBar(1, L, Period); => 13 리턴 2. Input: inputPeriod(60); Var: Period(0) ,tempIndex(0); For tempIndex = 0 to Min(inputPeriod, Index) - 1 { If V[tempIndex] > 0 Then { If tempIndex < inputPeriod Then Period = tempIndex + 1; } } NthLowestBar(1, L, Period); => 실제 Period는 55가 저장되어있으나 함수 결과는 1을 리턴, AccumN , Ema 와 같은 다른 함수는 Period 를 파라미터로 지정하여 실행한 결과 정상적인 값이 리턴됨 어떤 부분이 문제인가요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : NthHighestBar, NthLowestBar 질문 > 안녕하세요 예스스탁입니다. 함수에 지정된 기간이 60봉이면 최소 60개 이상 봉수를 가지는 종목만 대상이 됩니다. 수식은 수식에서 사용하는 최소봉수(MaxBarsBack) 이상이 되어야 값을 계산할수 있습니다. 수식에 고정되어 60을 기간으로 사용하는 함수가 있으면 해당 수식의 계산에 필요환 최소봉수는 60개 이상이 됩니다. 60봉이 되지 않는 종목에 대해서도 해당함수의 값을 알고자 하시면 해당 함수를 그대로 사용하시면 안되고 별도로 풀어서 작성하셔야 합니다. 즉 수식에서 MaxBarsBack이 60으로 잡히지 않게 하면서 60봉 미만인 종목은 해당 봉수 안에서만 계산하고 60봉이 넘는 종목은 60봉 내에서만 계산하게 하셔야 합니다. 아래 내용 참고하시기 바랍니다. var : ll(0),hh(0),lb(0),hb(0),cnt(0); hh = h[0]; ll = l[0]; for cnt = 0 to index { if cnt < 60 and h[cnt] > hh Then { hh = h[cnt]; hb = cnt; } if cnt < 60 and l[cnt] < ll Then { ll = l[cnt]; lb = cnt; } if cnt > 60 Then cnt = index+1; } 즐거운 하루되세요 > gutentak 님이 쓴 글입니다. > 제목 : NthHighestBar, NthLowestBar 질문 > 예를 들어 상장일이 60일이 안되는 종목의 경우 NthHighestBar, NthLowestBar 함수의 파라미터 중 기간에 60일 이상인 값을 넣어서 실행하면 결과 리턴여부 관계없이 종목검색결과에서 빠져버리는 문제가 있는 것 같습니다. 60일 중 허수봉이 포함되어있는 경우에도 검색자체가 안되는 것 같은데, 문제가 있는건지 아니면 달리 사용을 해야하는지 문의드립니다.