커뮤니티

질문이 있습니다

프로필 이미지
yamu
2024-12-20 14:49:12
540
글번호 186440
답변완료
배열에서 오름차순 정렬후 중앙값 (median) 구하는 함수는 있는데 배열이 아닐경우에는 배열로 처리해야 구할 수 있는거죠? 그런데 아래 수식에서 t==1 일때 값들을 예로들면 그 값들을 배열로 처리하면 차트상 t==1 인 모든 값들이 배열에 들어가고 median 이 구해지게 되지 않나요? 저는 t==1 일때마다 그 구간의 값들만 가지고 median 을 구해서 크로스다운 (t==-1) 일때 plot을 하고 또 다시 t==1 일때 리셋해서 구한뒤 반복을 하고 싶은데 어떻게 작성을 해야될까요? median의 경우 이평처럼 풀어서 작성이 안되는거 같아서 여쭤봅니다 if CrossUp(m1,m2) then 에서 배열을 초기화를 시키면 되나요?? 감사합니다 if CrossUp(m1,m2) Then { T = 1; sum1=0; ii = 0; } if t ==1 Then { ii = ii+1; sum1 = sum1+c; var1=sum1/ii; }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-12-20 16:03:50

안녕하세요 예스스탁입니다. 배열로 처리해야만 구할 수 있고 해당 배열은 crossup시 초기화를 하셔도 되고 안하셔도 됩니다. 초기화를 안해도 되는 이유는 MedianArray(대상배열, 사이즈)가 사이즈를 지정해야 하기 때문입니다. 0번방부터 지정한 방갯수만을 대상으로 중앙값을 구하므로 별로로 초기화는 큰 의미가 없습니다. 배열에 T가 1일때 매봉 var1값을 추가하고 T가 1인구간의 봉갯수를 사이즈로 지정해 주시면 됩니다. var : T(0),sum1(0),ii(0),cnt(0),m1(0),m2(0); Array : mav[200](0); m1 = ma(C,20); m2 = ma(c,60); if CrossUp(m1,m2) Then { T = 1; sum1=0; ii = 0; } if t ==1 Then { ii = ii+1; sum1 = sum1+c; var1=sum1/ii; For cnt = 199 DownTo 1 { mav[cnt] = mav[cnt-1]; } mav[0] = var1; } if CrossDown(m1,m2) Then { value1 = MedianArray(mav,ii); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 질문이 있습니다 > 배열에서 오름차순 정렬후 중앙값 (median) 구하는 함수는 있는데 배열이 아닐경우에는 배열로 처리해야 구할 수 있는거죠? 그런데 아래 수식에서 t==1 일때 값들을 예로들면 그 값들을 배열로 처리하면 차트상 t==1 인 모든 값들이 배열에 들어가고 median 이 구해지게 되지 않나요? 저는 t==1 일때마다 그 구간의 값들만 가지고 median 을 구해서 크로스다운 (t==-1) 일때 plot을 하고 또 다시 t==1 일때 리셋해서 구한뒤 반복을 하고 싶은데 어떻게 작성을 해야될까요? median의 경우 이평처럼 풀어서 작성이 안되는거 같아서 여쭤봅니다 if CrossUp(m1,m2) then 에서 배열을 초기화를 시키면 되나요?? 감사합니다 if CrossUp(m1,m2) Then { T = 1; sum1=0; ii = 0; } if t ==1 Then { ii = ii+1; sum1 = sum1+c; var1=sum1/ii; }