커뮤니티

질문드리겠습니다

프로필 이미지
yamu
2025-01-14 08:34:24
529
글번호 187148
답변완료
답변감사드립니다 전에 질문에서 countif로 질문을 드렸던 이유가 조건검색 환경에서 aa[0] > aa[1]*1.05 인 조건이 예를들어 "200봉 이내에서 3회이상 발생했을때 검색"을 하려고 했던건데요, 만약에 아래와 같은 방법으로 작성 (cnt 범위는 수정을 한다고 했을때)하게 되면 h>l*1.08 이 가장 최근봉 (현재 진행봉) 이어야만 검색이 가능한건가요? 조건검색은 차트상 가장 최근봉 기준으로 검색이돼서 현재 당장에 발생한 봉만이 아니라, 과거의 만족 시점들도 찾으려면 countif 를 써야하는데 아래식처럼 모든봉 기준이 아니라, 특정 조건+배열로 묶었을때의 상황에서는 어떻게 작성해야되는지 궁금합니다 조건이 차트상에서 0봉이 아니라 과거에 있었던 거라면 ( 예를 들어 가장 최근 조건만족봉이 차트상 현재봉에서 N 봉 전에 나왔었다면), "200봉 이내에 3회이상 발생" 이라는 조건을 검색하려면 어떻게 작성하면 될까요 감사합니다 var : cnt(0),count(0); Array : aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; } aa[0] = h; if aa[0] > aa[1]*1.05 Then Plot12(h,"aa comp",Green,Def,1); count = 0; for cnt = 0 to 4 { if aa[cnt] > aa[cnt+1]*1.05 then count = count+1; } if count >= 3 then Plot13(h,"CountIf",Red,Def,1); }
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-01-15 09:34:04

안녕하세요 예스스탁입니다. 배열변수의 값이 한번 저장되면 다음 조건만족시 까지 값이 유지되므로 countif로는 방법이 없고 for문으로 처리하셔야 합니다. 조건만족시 index 저장하시고 현재봉기준 200봉 안의 값만 비교해서 지정횟수 이상인지 판단하시면 됩니다. if h>l*1.08 Then 조건 만족할 때만 계산하시면 해당 if문 안에 위치하면 되고 아니면 밖으로 빼서 계산하시면 됩니다. var : cnt(0),count(0); Array : aa[50](0),ii[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; ii[0] = ii[cnt-1]; } aa[0] = h; ii[0] = Index; if aa[0] > aa[1]*1.05 Then Plot12(h,"aa comp",Green,Def,1); } count = 0; for cnt = 0 to 4 { if aa[cnt] > aa[cnt+1]*1.05 and aa[cnt+1] > 0 and ii[cnt] >= Index-200 then count = count+1; } if count >= 3 then Plot13(h,"CountIf",Red,Def,1); 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 질문드리겠습니다 > 답변감사드립니다 전에 질문에서 countif로 질문을 드렸던 이유가 조건검색 환경에서 aa[0] > aa[1]*1.05 인 조건이 예를들어 "200봉 이내에서 3회이상 발생했을때 검색"을 하려고 했던건데요, 만약에 아래와 같은 방법으로 작성 (cnt 범위는 수정을 한다고 했을때)하게 되면 h>l*1.08 이 가장 최근봉 (현재 진행봉) 이어야만 검색이 가능한건가요? 조건검색은 차트상 가장 최근봉 기준으로 검색이돼서 현재 당장에 발생한 봉만이 아니라, 과거의 만족 시점들도 찾으려면 countif 를 써야하는데 아래식처럼 모든봉 기준이 아니라, 특정 조건+배열로 묶었을때의 상황에서는 어떻게 작성해야되는지 궁금합니다 조건이 차트상에서 0봉이 아니라 과거에 있었던 거라면 ( 예를 들어 가장 최근 조건만족봉이 차트상 현재봉에서 N 봉 전에 나왔었다면), "200봉 이내에 3회이상 발생" 이라는 조건을 검색하려면 어떻게 작성하면 될까요 감사합니다 var : cnt(0),count(0); Array : aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; } aa[0] = h; if aa[0] > aa[1]*1.05 Then Plot12(h,"aa comp",Green,Def,1); count = 0; for cnt = 0 to 4 { if aa[cnt] > aa[cnt+1]*1.05 then count = count+1; } if count >= 3 then Plot13(h,"CountIf",Red,Def,1); }