배열에서 오름차순 정렬후 중앙값 (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;
}