커뮤니티

분봉 검색 관련해서 문의 드립니다.

프로필 이미지
태공
2022-07-27 10:51:44
1269
글번호 161096
답변완료
제가 검색하고자 하는 종목군의 조건은 다음과 같습니다. 1. 과거 10일, 20일, 40일 평균거래량 중 가장 작은 평균거래량을 구하고. 2. 당일 2분봉 또는 3분봉의 거래량이 평균거래량의 10% 이상 발생한 종목군을 찾는 수식입니다. var : nCnt(0), nSum(0), nMav(0), nMav1(0), nMav2(0), nMav3(0); if ( date != date[1] ) Then var1 = 0; Else var1 = var1 + 1; if ( DataCompress == 2 ) Then { ///////////////////////////////////////////////////////////////// //// 과거 10일, 20일, 40일 평균거래량 산출. For nCnt = 1 to 40 { nSum = nSum + DayVolume(nCnt); if nCnt == 10 Then nMav1 = INT(nSum / 10); Else if nCnt == 20 Then nMav2 = INT(nSum / 20); Else if nCnt == 40 Then nMav3 = INT(nSum / 40); } nMav = Min(nMav1, nMav2, nMav3); ///////////////////////////////////////////////////////////////////// ///// 당일 분봉에서 과거 평균거래량의 10% 이상 발생 여부를 확인. For nCnt = var1 DownTo 0 { if ( V[var1-nCnt] > nMav * 0.10 ) Then { Find(var1); nCnt = -1; } } } ///////////////////////////////////////////////////////////////////////////// 제가 예스스탁을 시작한지 얼마되지 않아서 구조에 대해서 이해가 부족한 것 같습니다. 혹시 잘못된 부분이 있는지요? 예를들어 몇몇 종목은 검색이 되지만 조건에 만족하는 모든 종목이 검색되는 것 같지 않고 9시 10분쯤 검색된 종목이 9시 40분 지나면 검색되지가 않네요. 당일 분봉의 번호를 구하기 위해 Dayindex라는 변수를 사용해 보았는데 특정 시간이 지나면 초기화 되는 것 같기도 합니다. 예를들어 당일 첫봉 번호는 제대로 들어오고 9번까지는 정상적으로 카운팅 되다가 봉 갯수가 늘어나면서 초기화 된다고 할까(?) 제 코드에 구조적인 문제가 있나요??
종목검색
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2022-07-27 15:44:04

안녕하세요 예스스탁입니다. 1 식 구조나 일봉거래량 계산에는 이상이 없습니다. 종목검색시에 속성에서 검색에 필요한 최소기간에 2분봉이나 3분봉에서 당일 봉이 모두 포함되게 봉수가 지정이 되어야 합니다. 종목검색은 최대 500봉까지 지정되므로 넉넉히 500봉으로 지정하고 검색하시기 바랍니다. 봉수를 지정하지 않으면 수식자체에서 최소봉수를 산정하게 되는데 해당 봉수가 실제 필요한 봉수보다 작을수 있습니다. 2 수식은 항상 과거봉부터 현재봉쪽으로 오면서 계산되므로 현재봉에서 for문으로 매봉 당일과거봉의 값을 가져와 비교할 필요는 없습니다. 첫봉에서는 0값을 가지고 매봉 거래량이 일간최소평균거래량의 10% 이상 발생한 봉이 있으면 1씩 카운트가 증가하게 하고 1이상인 종목을 찾게 하시면 됩니다. 3 var : nCnt(0), nSum(0), nMav(0), nMav1(0), nMav2(0), nMav3(0); #당일첫봉 if date != date[1] Then { var1 = 0; #전일기준 10,20,40일 평균거래량 계산 For nCnt = 1 to 40 { nSum = nSum + DayVolume(nCnt); if nCnt == 10 Then nMav1 = INT(nSum / 10); Else if nCnt == 20 Then nMav2 = INT(nSum / 20); Else if nCnt == 40 Then nMav3 = INT(nSum / 40); } //평균거래량 중 최소값 nMav = Min(nMav1, nMav2, nMav3); } if V > nMav * 0.10 Then var1 = var1+1; if var1 > 0 Then Find(var1); 즐거운 하루되세요 > 태공 님이 쓴 글입니다. > 제목 : 분봉 검색 관련해서 문의 드립니다. > 제가 검색하고자 하는 종목군의 조건은 다음과 같습니다. 1. 과거 10일, 20일, 40일 평균거래량 중 가장 작은 평균거래량을 구하고. 2. 당일 2분봉 또는 3분봉의 거래량이 평균거래량의 10% 이상 발생한 종목군을 찾는 수식입니다. var : nCnt(0), nSum(0), nMav(0), nMav1(0), nMav2(0), nMav3(0); if ( date != date[1] ) Then var1 = 0; Else var1 = var1 + 1; if ( DataCompress == 2 ) Then { ///////////////////////////////////////////////////////////////// //// 과거 10일, 20일, 40일 평균거래량 산출. For nCnt = 1 to 40 { nSum = nSum + DayVolume(nCnt); if nCnt == 10 Then nMav1 = INT(nSum / 10); Else if nCnt == 20 Then nMav2 = INT(nSum / 20); Else if nCnt == 40 Then nMav3 = INT(nSum / 40); } nMav = Min(nMav1, nMav2, nMav3); ///////////////////////////////////////////////////////////////////// ///// 당일 분봉에서 과거 평균거래량의 10% 이상 발생 여부를 확인. For nCnt = var1 DownTo 0 { if ( V[var1-nCnt] > nMav * 0.10 ) Then { Find(var1); nCnt = -1; } } } ///////////////////////////////////////////////////////////////////////////// 제가 예스스탁을 시작한지 얼마되지 않아서 구조에 대해서 이해가 부족한 것 같습니다. 혹시 잘못된 부분이 있는지요? 예를들어 몇몇 종목은 검색이 되지만 조건에 만족하는 모든 종목이 검색되는 것 같지 않고 9시 10분쯤 검색된 종목이 9시 40분 지나면 검색되지가 않네요. 당일 분봉의 번호를 구하기 위해 Dayindex라는 변수를 사용해 보았는데 특정 시간이 지나면 초기화 되는 것 같기도 합니다. 예를들어 당일 첫봉 번호는 제대로 들어오고 9번까지는 정상적으로 카운팅 되다가 봉 갯수가 늘어나면서 초기화 된다고 할까(?) 제 코드에 구조적인 문제가 있나요??
프로필 이미지

태공

2022-07-27 15:56:16

태공 님에 의해 삭제된 답변입니다.