커뮤니티

긴 주기 참조

프로필 이미지
이만스닥
2024-01-04 12:55:16
774
글번호 175420
답변완료
안녕하세요 긴 주기 참조해서 사용자 함수 만드는 법을 여쭤봤었습니다. (글 85189) 주신 수식대로 사용자 함수를 만들어서 적용했으나, 결과가 맞지 않는 것 같아 재문의드립니다. 10년 전부터 오늘까지의 X 평균을 구하는 식 작성을 요청드렸고 아래와 같이 답변 주셨습니다. ex1) 10yrAVG(C) <--이렇게 적을 경우 10년전부터 오늘까지의 종가의 평균을 구하고 싶습니다. ex2) value1 = stdv(C, 25); 10yrAVG(value1) <-- 이렇게 적으면 25일간의 종가 표준편차의 10년간의 평균을 구함. *만약, micro crude oil 처럼 해당 종목이 10년이 채 안되었을 경우, 차트 시작의 첫 봉부터 오늘까지의 봉의 C의 평균을 나타내게 부탁드립니다. /// 함수명 : avg10yr 반환값형 : 숫자형 input : price(Numeric); var : cnt(0); Array : sum1[50](0),sum2[50](0); if Bdate > Bdate[1]+1000 Then { For cnt = 49 DownTo 1 { sum1[cnt] = sum1[cnt-1]; sum2[cnt] = sum2[cnt-1]; } sum1[0] = 0; sum2[0] = 0; } if IsNan(price) == False Then { sum1[0] = sum1[0]+price; sum2[0] = sum2[0]+1; } var1 = 0; Var2 = 0; For cnt = 0 to 9 { var1 = var1+sum1[cnt]; var2 = var2+sum2[cnt]; } avg10yr = var1/Var2; ///// 일봉상에서 사용한다고 말씀드린다는 것을 깜박했는데, 해당 코드로 하면 뭔가 결과가 이상합니다. 왜 어레이에 256(시장이 열리는 날 수)가 아니라 50으로 되었는지 이해가 어렵습니다. 또한 해당 코드대로 작성을 하면 해가 바뀔 때, 갑자기 값이 튑니다. 코드 작성 번거로우시더라도 한번 더 부탁드립니다. (__)
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-01-04 15:17:49

안녕하세요 예스스탁입니다. 함수의 어느부분을 수정해 드려야 할지 모르겠습니다. 해당 함수는 10년 간의 매봉의 지정값을 모아 평균하는 내용이 맞습니다. 각 배열변수는 하나의 방이 하나의 연도의 누적값입니다. [0]은 당해누적, [1]은 전년누적, [2]는 전전년 누적순입니다. 최근 50년치로 넉넉히 [50]개로 지정한 것입니다. 차트에 10년치의 데이터가 없으면 차트에 있는 기간만큼만 계산하게 되어 있습니다. 즐거운 하루되세요 > 이만스닥 님이 쓴 글입니다. > 제목 : 긴 주기 참조 > 안녕하세요 긴 주기 참조해서 사용자 함수 만드는 법을 여쭤봤었습니다. (글 85189) 주신 수식대로 사용자 함수를 만들어서 적용했으나, 결과가 맞지 않는 것 같아 재문의드립니다. 10년 전부터 오늘까지의 X 평균을 구하는 식 작성을 요청드렸고 아래와 같이 답변 주셨습니다. ex1) 10yrAVG(C) <--이렇게 적을 경우 10년전부터 오늘까지의 종가의 평균을 구하고 싶습니다. ex2) value1 = stdv(C, 25); 10yrAVG(value1) <-- 이렇게 적으면 25일간의 종가 표준편차의 10년간의 평균을 구함. *만약, micro crude oil 처럼 해당 종목이 10년이 채 안되었을 경우, 차트 시작의 첫 봉부터 오늘까지의 봉의 C의 평균을 나타내게 부탁드립니다. /// 함수명 : avg10yr 반환값형 : 숫자형 input : price(Numeric); var : cnt(0); Array : sum1[50](0),sum2[50](0); if Bdate > Bdate[1]+1000 Then { For cnt = 49 DownTo 1 { sum1[cnt] = sum1[cnt-1]; sum2[cnt] = sum2[cnt-1]; } sum1[0] = 0; sum2[0] = 0; } if IsNan(price) == False Then { sum1[0] = sum1[0]+price; sum2[0] = sum2[0]+1; } var1 = 0; Var2 = 0; For cnt = 0 to 9 { var1 = var1+sum1[cnt]; var2 = var2+sum2[cnt]; } avg10yr = var1/Var2; ///// 일봉상에서 사용한다고 말씀드린다는 것을 깜박했는데, 해당 코드로 하면 뭔가 결과가 이상합니다. 왜 어레이에 256(시장이 열리는 날 수)가 아니라 50으로 되었는지 이해가 어렵습니다. 또한 해당 코드대로 작성을 하면 해가 바뀔 때, 갑자기 값이 튑니다. 코드 작성 번거로우시더라도 한번 더 부탁드립니다. (__)