커뮤니티
종목검색식 문의
글번호 227653 에서
" 위 그림과 같이 아이원플러스, 모니터랩은 그 이후에도 만족한 날짜가 있습니다. 즉 30일중 여러날 만족하면 가장최근 날짜가 결과값으로 표시됩니다." 라는 답변을 받았습니다.
그렇다면 30일치 검색을 하였을때, 종목이 각 다른 날에 중첩되어 검색이 되더라도 검색된 날 각 표시가 되게 할 수 는 없을까요?
예를 들어 오늘을 기준으로 30일치를 한번에 검색할때
11월 1일에 삼성전자가 검색이 되고
11월 5일에도 삼성전자가 검색이 된다면,
글번호 227653에서 제가 작성한 식으로는 11월 5일 삼성전자만 표시가 됩니다.
제가 원하는 것은 11월 1일에도 삼성전자가 나오고, 11월 5일에도 삼성전자가 나오게 하는 것입니다.
(중복일시 가장 최근에 검색된 것만 검색된 날짜만 표시되는 것이 아닌 ! ) 모든 날짜에 표시가 되게 할 수 있도록 아래 수식을 변경해주시면 감사하겠습니다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* 조건식 변환본 (최근 30일치 자동검색 버전)
원식:
A and B and C and ((D and E and F and G and H) or (M and J and K)) and N and O and P and Q
*/
var : A(false), B(false), Cc(false), Dd(false), Ee(false), Ff(false);
var : Gg(false), Hh(false), Mm(false), Jj(false), Kk(false);
var : Nn(false), Oo(false), Pp(false), Qq(false);
var : d(false);
var : VALUE1(0);
/* A: 1봉전 종가대비 0봉전 고가등락률 15% 이상 */
A = (H - C[1]) / C[1] * 100 >= 15;
/* B: 0봉전 시가 < 0봉전 종가 */
B = O < C;
/* C: [일]거래대금(일:백만) 20000이상 999999999이하
→ 원단위로 변환: 20000000000 ~ 999999999000000
*/
Cc = m >= 20000000000 and m <= 999999999000000;
/* D: [일]3봉전 5봉 평균거래량 100000이상 999999999이하 */
Dd = ma(V,5)[3] >= 100000 and ma(V,5)[3] <= 999999999;
/* E: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */
Ee = (C - C[1]) / C[1] * 100 <= 29.65;
/* F: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */
Ff = (C[2] - C[3]) / C[3] * 100 <= 29.65;
/* G: 2봉전 시가 < 2봉전 종가 */
Gg = O[2] < C[2];
/* H: 3봉전 종가대비 2봉전 고가등락률 15% 이상 */
Hh = (H[2] - C[3]) / C[3] * 100 >= 15;
/* M: [일]4봉전 5봉 평균거래량 100000이상 999999999이하 */
Mm = ma(V,5)[4] >= 100000 and ma(V,5)[4] <= 999999999;
/* J: 3봉전 시가 < 3봉전 종가 */
Jj = O[3] < C[3];
/* K: 4봉전 종가대비 3봉전 고가등락률 15% 이상 */
Kk = (H[3] - C[4]) / C[4] * 100 >= 15;
/* N: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */
Nn = (C - C[1]) / C[1] * 100 <= 29.65;
/* O: 2봉전 종가대비 1봉전 종가등락률 29.65% 이하 */
Oo = (C[1] - C[2]) / C[2] * 100 <= 29.65;
/* P: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */
Pp = (C[2] - C[3]) / C[3] * 100 <= 29.65;
/* Q: 4봉전 종가대비 3봉전 종가등락률 29.65% 이하 */
Qq = (C[3] - C[4]) / C[4] * 100 <= 29.65;
/* 최종식 */
d = A
and B
and Cc
and ( (Dd and Ee and Ff and Gg and Hh) or (Mm and Jj and Kk) )
and Nn
and Oo
and Pp
and Qq;
/* 조건 충족일 기록 */
if d then
VALUE1 = sDate;
/* 최근 30일 내 조건이 한 번이라도 발생한 종목만 출력 */
if CountIf(d == true, 30) >= 1 then
Find(VALUE1);
답변 1
예스스탁 예스스탁 답변
2025-11-06 11:03:44