커뮤니티
이동평균의 평균
2017-04-17 00:11:13
214
글번호 108871
답변 감사합니다. 이평 계산식을 for-loop에서 빼내니 잘 계산되네요.
그런데, n이 변수이거나 매우 크다면, 이평대입식을 무수히 쓰는 것 외에 방법은 없나요?
왜 차이가 발생하는지 이해가 잘 안됩니다. 매뉴얼 어디를 봐야 이해할 수 있을까요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 이동평균의 평균
>
안녕하세요
예스스탁입니다.
EMA = 금일 종가 * EP + 전일의 지수 이동평균 * (1-EP)
※ EP(평활계수) = 2/(기간 + 1)
지수이평은 계산방식이 과거로 부터 현재까지 순차적으로 계산하게 하셔야 합니다.
단순이평과 같이 현재시점에서 과거N개봉만이 요구되는 평균방식이 아닙니다.
아래와 같이 배열변수에 각 지수이평값을 나열해서 할당후 사용해야 합니다.
input : StartMaPeriod(5),NumPeriod(10);
var : count(0);
Array : emav[100](0),emavv[100](0);
emav[0] = ema(C,StartMaPeriod);
emav[1] = ema(C,StartMaPeriod+1);
emav[2] = ema(C,StartMaPeriod+2);
emav[3] = ema(C,StartMaPeriod+3);
emav[4] = ema(C,StartMaPeriod+4);
.
.
.
.
emav[n] = ema(C,StartMaPeriod+n);
#배열방의 값을 가져와 평균
value1 = 0;
For count = 0 to NumPeriod-1 {
value1 = value1 + emav[count];
}
value1 = value1 / NumPeriod;
즐거운 하루되세요
> 시지푸스 님이 쓴 글입니다.
> 제목 : 이동평균의 평균
> 안녕하세요. 특정구간의 모든 ema에 대해서 평균을 구하려고 합니다.
아래와 같이 작성했는데, 평균이 구해지지 않네요.
무엇이 잘못됬을까요? ema대신 ma를 사용하면 평균이 잘 구해집니다..
value1 = 0;
For count = StartMaPeriod to StartMaPeriod+NumPeriod-1 {
value1 = value1 + ema(Close, count);
}
value1 = value1 / NumPeriod;
답변 1
예스스탁 예스스탁 답변
2017-04-18 17:37:34
안녕하세요
예스스탁입니다.
해당 부분은 매뉴얼에 따로 언급되는 부분이 아니고
계산식의 특성때문에 발생하는 부분입니다.
현재봉 계산을 하려면 직전봉까지 계산한 ema값이 있어야 하는데
for문에 의해 매봉 새로 호출하는 것으로 인지하기 때문입니다.
지수이평은 대입식을 필요한 만큼 나열해 작성하고 이용하는 방법뿐이 없습니다.
단순이평이나 가중이평은 관계없습니다.
즐거운 하루되세요
> 시지푸스 님이 쓴 글입니다.
> 제목 : 이동평균의 평균
> 답변 감사합니다. 이평 계산식을 for-loop에서 빼내니 잘 계산되네요.
그런데, n이 변수이거나 매우 크다면, 이평대입식을 무수히 쓰는 것 외에 방법은 없나요?
왜 차이가 발생하는지 이해가 잘 안됩니다. 매뉴얼 어디를 봐야 이해할 수 있을까요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 이동평균의 평균
>
안녕하세요
예스스탁입니다.
EMA = 금일 종가 * EP + 전일의 지수 이동평균 * (1-EP)
※ EP(평활계수) = 2/(기간 + 1)
지수이평은 계산방식이 과거로 부터 현재까지 순차적으로 계산하게 하셔야 합니다.
단순이평과 같이 현재시점에서 과거N개봉만이 요구되는 평균방식이 아닙니다.
아래와 같이 배열변수에 각 지수이평값을 나열해서 할당후 사용해야 합니다.
input : StartMaPeriod(5),NumPeriod(10);
var : count(0);
Array : emav[100](0),emavv[100](0);
emav[0] = ema(C,StartMaPeriod);
emav[1] = ema(C,StartMaPeriod+1);
emav[2] = ema(C,StartMaPeriod+2);
emav[3] = ema(C,StartMaPeriod+3);
emav[4] = ema(C,StartMaPeriod+4);
.
.
.
.
emav[n] = ema(C,StartMaPeriod+n);
#배열방의 값을 가져와 평균
value1 = 0;
For count = 0 to NumPeriod-1 {
value1 = value1 + emav[count];
}
value1 = value1 / NumPeriod;
즐거운 하루되세요
> 시지푸스 님이 쓴 글입니다.
> 제목 : 이동평균의 평균
> 안녕하세요. 특정구간의 모든 ema에 대해서 평균을 구하려고 합니다.
아래와 같이 작성했는데, 평균이 구해지지 않네요.
무엇이 잘못됬을까요? ema대신 ma를 사용하면 평균이 잘 구해집니다..
value1 = 0;
For count = StartMaPeriod to StartMaPeriod+NumPeriod-1 {
value1 = value1 + ema(Close, count);
}
value1 = value1 / NumPeriod;
다음글
이전글