커뮤니티

이동평균의 평균

프로필 이미지
시지푸스
2017-04-06 01:27:34
207
글번호 108520
답변완료
안녕하세요. 특정구간의 모든 ema에 대해서 평균을 구하려고 합니다. 아래와 같이 작성했는데, 평균이 구해지지 않네요. 무엇이 잘못됬을까요? ema대신 ma를 사용하면 평균이 잘 구해집니다.. value1 = 0; For count = StartMaPeriod to StartMaPeriod+NumPeriod-1 { value1 = value1 + ema(Close, count); } value1 = value1 / NumPeriod;
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2017-04-07 09:55:34

안녕하세요 예스스탁입니다. 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;
프로필 이미지

시지푸스

2017-04-08 04:02:51

답변 감사합니다. 이평 계산식을 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;