커뮤니티

질문드리겠습니다

프로필 이미지
yamu
2025-01-13 16:22:33
549
글번호 187143
답변완료
안녕하세요 몇가지 여쭤보겠습니다 질문1) 아래와 같은 수식에서 1 to (var2-var1)-1 구간의 평균을 value1 에 구해놨는데요,, 1 to (var2-var1)-1 구간에서 value1 값보다 큰 H 값이 나올때마다 저장을하고 (최고가 값을 구하는게 아님) 그 모든 H 값들을 더해서 평균을 구하는 수식을 만들고 싶습니다 감사합니다 var : cnt(0), sum1(0), sumi(0),tt(0),hh(0),ll(0); var : t(0),StartBarIndex(0); Array : ii[50](0),aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; sum1=0; sumi=0; For cnt = 1 to (var1-Var2)-1 { sum1=sum1+h[cnt]; sumi=sumi+1; } value1=sum1/sumi; if value1>0 then Plot11(value1,"sma",Blue,Def,1); } 질문2) countif 관련 질문인데요 countif 는 현재봉 기준으로 과거 일정 기간동안 조건이 횟수만큼 발생하면 신호가 나오는게 맞지 않나요? 아래 수식과 같이 h>l*1.08 라는 조건문 안에 countif 가 있으면, if CountIf(aa[0] > aa[1]*1.05,5)>=4 이 부분을 어떻게 처리하는건지 궁금합니다 현재봉이 직전봉 (배열) 보다 5%이상 크다 라는 조건이 4회이상 나온다 라는 의도로 작성했습니다. 처음에는 100봉 같이 기간을 길게 잡고 했었는데 5봉 같이 짧은기간에도 나오길레 조건만족봉에서 뒤로 5개봉이내가 아니라 조건만족에 해당한 봉들 5개 이내이며, countif 에 들어간 조건은 h>l*1.08 조건만족 해당할때만 (즉 조건 두가지 모두 만족), 이라는 의미인거 같은데.. 조건에 맞지 않는데도 신호가 나올때가 있어서 헷갈리네요 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); if CountIf(aa[0] > aa[1]*1.05,5)>=4 Then Plot13(h,"CountIf",Red,Def,1); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-01-13 16:54:28

안녕하세요 예스스탁입니다. 1 for문을 한번더 돌려저 계산하시면 됩니다. var : cnt(0), sum1(0), sumi(0),tt(0),hh(0),ll(0); var : t(0),StartBarIndex(0); Array : ii[50](0),aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; sum1=0; sumi=0; For cnt = 1 to (var1-Var2)-1 { sum1=sum1+h[cnt]; sumi=sumi+1; } value1=sum1/sumi; if value1>0 then { Plot11(value1,"sma",Blue,Def,1); value2 = 0; Value3 = 0; For cnt = 1 to (var1-Var2)-1 { if h[cnt] > value1 Then { Value2 = Value2 + H[cnt]; value3 = value3 +1; } Value4 = Value2/Value3; } } } 2 countif는 연속된 봉에서 조건을 체크합니다. countif(조건,5)는 현재봉~4봉전까지 지정한 조건이 만족한 횟수를 카운트 합니다. if h>l*1.08 Then안에서 호출된다고 해서 해당 if 조건 만족할 봉만을 대상으로 계산하지 않습니다. 이부분은 봉수를 지정하는 모든 함수가 동일합니다. 최근 N개봉값을 구하는 내용이고 if문과 같이 사용해도 동일합니다. 해당 내용도 for문으로 구하셔야 합니다. 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 >= 4 then Plot13(h,"CountIf",Red,Def,1); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 질문드리겠습니다 > 안녕하세요 몇가지 여쭤보겠습니다 질문1) 아래와 같은 수식에서 1 to (var2-var1)-1 구간의 평균을 value1 에 구해놨는데요,, 1 to (var2-var1)-1 구간에서 value1 값보다 큰 H 값이 나올때마다 저장을하고 (최고가 값을 구하는게 아님) 그 모든 H 값들을 더해서 평균을 구하는 수식을 만들고 싶습니다 감사합니다 var : cnt(0), sum1(0), sumi(0),tt(0),hh(0),ll(0); var : t(0),StartBarIndex(0); Array : ii[50](0),aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; sum1=0; sumi=0; For cnt = 1 to (var1-Var2)-1 { sum1=sum1+h[cnt]; sumi=sumi+1; } value1=sum1/sumi; if value1>0 then Plot11(value1,"sma",Blue,Def,1); } 질문2) countif 관련 질문인데요 countif 는 현재봉 기준으로 과거 일정 기간동안 조건이 횟수만큼 발생하면 신호가 나오는게 맞지 않나요? 아래 수식과 같이 h>l*1.08 라는 조건문 안에 countif 가 있으면, if CountIf(aa[0] > aa[1]*1.05,5)>=4 이 부분을 어떻게 처리하는건지 궁금합니다 현재봉이 직전봉 (배열) 보다 5%이상 크다 라는 조건이 4회이상 나온다 라는 의도로 작성했습니다. 처음에는 100봉 같이 기간을 길게 잡고 했었는데 5봉 같이 짧은기간에도 나오길레 조건만족봉에서 뒤로 5개봉이내가 아니라 조건만족에 해당한 봉들 5개 이내이며, countif 에 들어간 조건은 h>l*1.08 조건만족 해당할때만 (즉 조건 두가지 모두 만족), 이라는 의미인거 같은데.. 조건에 맞지 않는데도 신호가 나올때가 있어서 헷갈리네요 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); if CountIf(aa[0] > aa[1]*1.05,5)>=4 Then Plot13(h,"CountIf",Red,Def,1); }