커뮤니티

배열을 공부하는중에 궁금한것이 생겨 질문 남깁니다.

프로필 이미지
퀀트드래곤
2019-08-22 07:18:24
188
글번호 131339
답변완료
아래와 같이 코딩을 하였는데, 결과값이 다른데 왜 그런것인지 모르겠네요 plot1은 배열에 dayopen을 10일치를 받아서 평균을 낸 것이고 plot2는 그냥 이동평균으로 10일치를 낸 것인데 결과값이 같아야하지 않나요? ------------------------------- var : cnt(0),sum(0),mav(0); array: tmp[10](0); for cnt = 0 to 9 { tmp[cnt] = dayopen(cnt); # 이렇게 cnt순서대로 돌아가면서 배열에다가 데이오픈을 넣는다. } for cnt = 0 to 9 { sum = sum + tmp[cnt]; # 배열에 차례대로 넣은 데이오픈(시초가)를 sum에다 하나씩 넣어준다. } sum = sum/10; plot1(sum); //////////동일한 결과 만들기 mav = Ma(dayopen, 10); plot2(mav);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-08-22 14:16:58

안녕하세요 예스스탁입니다. 1 mav = Ma(dayopen, 10); 위 수식은 일봉 10개의 시가를 모아 평균하는 것이 아닙니다. ma는 연속되는 봉에서 지정한 값을 가져와 평균을 하게 됩니다. 차트가 일봉이면 일봉 10개이지만 차트가 분봉이하이면 최근 10개봉 각각에서의 당일시가일뿐입니다. 당일 10개봉이상 경과되면 10개 모두 동일값입니다. plot1(dayopen); 분봉이하의 차트에 위 지표 적용해 보시면 당일봉에 시초가가 수평으로 그려지게 됩니다. 현재봉기준으로 최근 10개봉의 값을 확인하시기 바랍니다. 분봉이하의 차트에서 일간의 이평을 계산하는 로직은 올려주신 for문을 이용해서 작성해야만 합니다. 다른 방법이 없습니다. 2 작성하신 for문에 오류가 있어 수정해 드립니다. dauyopen은 (0),(1),(2)와 같이 이전일을 지정해 값을 가져오는 함수이므로 별도로 배열변수 처리가 불필요합니다. 현재기준항상 값을 sum에 누적하므로 for문에 들어가지 전에 항상 sum을 0으로 초기화 해야 합니다. var : cnt(0),sum(0),mav(0); sum = 0; for cnt = 0 to 9 { sum = sum + dayopen(cnt); } mav = sum/10; plot1(mav); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 배열을 공부하는중에 궁금한것이 생겨 질문 남깁니다. > 아래와 같이 코딩을 하였는데, 결과값이 다른데 왜 그런것인지 모르겠네요 plot1은 배열에 dayopen을 10일치를 받아서 평균을 낸 것이고 plot2는 그냥 이동평균으로 10일치를 낸 것인데 결과값이 같아야하지 않나요? ------------------------------- var : cnt(0),sum(0),mav(0); array: tmp[10](0); for cnt = 0 to 9 { tmp[cnt] = dayopen(cnt); # 이렇게 cnt순서대로 돌아가면서 배열에다가 데이오픈을 넣는다. } for cnt = 0 to 9 { sum = sum + tmp[cnt]; # 배열에 차례대로 넣은 데이오픈(시초가)를 sum에다 하나씩 넣어준다. } sum = sum/10; plot1(sum); //////////동일한 결과 만들기 mav = Ma(dayopen, 10); plot2(mav);