커뮤니티

이런 함수가 있으면 좋겠읍니다.

프로필 이미지
박태근
2005-10-14 20:52:36
1033
글번호 8536
당일의 마지막 봉임을 return하는 함수가 있으면 검증할 때 편하겠읍니다. 첫 봉은 dayindex()로 구할 수가 있지만 마직막 봉은 이게 안됩니다. 봉 수가 다른 날이 있고, 그렇다고 시간 함수로 구하려면 끝나는 시간이 다른 날이 있기 때문이죠. 설정 부분에 종가에 청산을 하게 하는 기능이 있는 걸로 보아 내부적으로는 마지막 봉을 return하는 함수가 있는 거 같은데요. 일반 사용자들도 좀 쓸 수 있게 되면 좋겠읍니다. 그럼 수고 하세요.
지표
답변 1
프로필 이미지

수식지왕

2005-10-15 02:14:25

로직으로 구현 가능한 범위내에서 사용자함수로 만들어보았습니다. 로직으로 구현 가능한 범위라고 단서를 달은 이유는 사용자가 생각해 낼 수 있는 로직은 장종료 예정시각을 기준으로 마지막 봉인지 체크하는 것인데 더 이상 거래가 발생하지 않아 수신 데이터가 안 오면 14:00가 마지막봉일 수도 있고 13:00가 마지막 봉일 수도 있기 때문입니다. 선물의 경우 데이터 누락이 거의 없지만 현물중 특히 유동성이 부족한 경우에는 장개시가 9시가 아닌 10시 이후부터 시가가 나오는 경우도 있고 종가도 15:00에 나오는 게 아니라 장중간부터 아예 데이터가 없는 경우가 많습니다. 매매거래 중지나 정지 등 시장조치 때문일 수도 있기 때문에 현물에 대해서는 로직으로 마지막 봉 여부를 찾는 것은 불가능하고 선물에 대해서는 가능하다고 볼 수 있습니다. 수능일에 1시간 연장하여 장종료하는 것은 경험상으로 반영할 수 있겠으나 장애 등으로 인한 시간 변경이나 설,추석 연휴에 의한 최종거래일 변경은 로직으로 풀 수 없는 문제입니다. 아래 수식을 예스차트에서 선물에 대해 2000년부터 검증을 해보니 4군데만 틀리고 나머지는 정확했습니다. 그중 2000년 1월4일은 13:15이 3월24일과 3월29일은 14:59 봉이 마지막이었는데 데이터의 문제인 것 같고 흔하지 않은 케이스인데 특이하게 2003년 9월 추석연휴 때문에 최종거래일이 앞으로 당겨져서 시간이 바뀐 것 이렇게 4군데에서 오류가 나왔습니다. 찾아보니 911 테러때도 장시간 변동이 없었네요. 마지막봉에서 주문이 불가능한 점을 고려하여 n봉 이전에 체크할 수 있도록 입력변수를 두었습니다. 첨부된 사용자 함수식의 내용 input:n(numeric); var:mm(0), dd(0), ww(0), tt(0), starttime(0), endtime(0), check_bit(false); mm = int(date/100)-int(date/10000)*100; //최종거래일 여부를 판단하기 위한 변수들 dd = date - int(date/100)*100; ww = DayOfWeek(date); if dayindex()==0 then { starttime = TimeToMinutes(stime); check_bit = false; } if CodeCategory() < 4 then //kospi,kosdaq,제3시장 endtime = 900; //장종료 15:00 else if ((mm % 3 == 0 and CodeCategory() == 4) //선물종목일 경우 3,6,9,12월 or CodeCategory() > 4) //옵션종목일 경우 매월 and dd >= 8 and dd <= 14 //두번째 and ww == 4 then //목요일 endtime = 890-BarInterval(); //장종료 14:50, 최종거래일에는 동시마감 없으므로 1450 봉이 없음 else endtime = 915; //그외는 15:15 if starttime==600 and mm==11 then //수능일 장종료는 1시간 연장 endtime = endtime + 60; //10시에 장개시하고 보통 11월이었으므로 tt = endtime - (n+1)*BarInterval(); //마지막봉의 n봉전 시간 if MinutesToTime(tt) < stime and check_bit==false then { _endofday = true; check_bit = true; } else _endofday = false; 시스템에 적용 예제 (당일 청산이라면) if _endofday(3) then exitlong; //마지막 봉에서는 주문이 안나가므로 5분봉 차트에서 마지막봉 3봉전에 주문이 발생되도록 함 > shinnara 님이 쓴 글입니다. > 제목 : 이런 함수가 있으면 좋겠읍니다. > 당일의 마지막 봉임을 return하는 함수가 있으면 검증할 때 편하겠읍니다. 첫 봉은 dayindex()로 구할 수가 있지만 마직막 봉은 이게 안됩니다. 봉 수가 다른 날이 있고, 그렇다고 시간 함수로 구하려면 끝나는 시간이 다른 날이 있기 때문이죠. 설정 부분에 종가에 청산을 하게 하는 기능이 있는 걸로 보아 내부적으로는 마지막 봉을 return하는 함수가 있는 거 같은데요. 일반 사용자들도 좀 쓸 수 있게 되면 좋겠읍니다. 그럼 수고 하세요.