커뮤니티

PercentRank 함수 만들어주세요

프로필 이미지
이만스닥
2024-02-29 15:02:59
712
글번호 177073
답변완료
안녕하세요 어느덧 2월도 갑니다..항상 건강하십쇼 다름이 아니라 엑셀의 PercentRank 기능을 예스랭귀지에서 사용하고 싶은데 없어서 문의드립니다. https://support.microsoft.com/ko-kr/office/percentrank-%ED%95%A8%EC%88%98-f1b5836c-9619-4847-9fc9-080ec9024442 참고 부탁드립니다. *값은 변수가 아니라 Array로 저장시켜주세요. (어레이 저장 개수는 예트가 허락하는 한 가장 큰 값으로 부탁드려요) 사유 : variable이면 maxbarsback이 늘어남 PERCENTRANK(1) = Array로 저장되는 모든 값들이라는 범위에서 마지막 Array에 저장된 값의 백분율 순위 PERCENTRANK(2) = 전 봉의 PERCENTRANK(1) 예제에는 Close 값을 Array에 담아서 부탁드립니다. ex) Percentrank(Close) = 차트상 모든 C 값이라는 범위에서 마지막 저장된 C 값의 백분율 순위 밑에껀 정답은 아니지만 혹시 도움 될까봐서 올립니다. /////// /////// // PercentRank 함수 정의 function PercentRank(currentValue, DataArray) vars: vari1(0), numLower(numeric), // 현재 값보다 낮은 값의 개수 totalCount(numeric), // 총 값의 개수 rank(numeric); // 백분위 순위 vari1 = Close; if CurrentBar >= 1 Then { numLower = 0; totalCount = 0; For cnt = 100000 DownTo 1 { vv[cnt] = VV[cnt-1]; if vv[cnt] > 0 Then { if dataArray[value] < currentValue then numLower = numLower + 1; totalCount = totalCount+1 } } vv[0] = vari1 } // 백분위 순위 계산 rank = (numLower / totalCount) * 100; // 함수 결과 반환 PercentRank = rank; percentileRank = PercentRank(Close) /////// ///////
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-02-29 15:58:55

안녕하세요 예스스탁입니다. 1 In*sertArray(대상배열, 삽입위치, 삽입값) PercentRankArray(대상값, 대상배열, 사이즈) 기본제공되는 함수 중에 위 함수를 이용하시면 될 것 같습니다. 2 In*sertArray는 지정한 배열변수에 값을 추가하는 함수입니다. In*sertArray(cc, 0, c); 위와 같이 지정하면 0번방에 종가가 저장하는데 저장 전에 기존값을 다음방에 옮긴후에 저장합니다. 영문 인서트가 게시판 금칙어라 중간에 *이 있습니다, PercentRankArray함수로 리턴받아 사용하시면 됩니다 각 함수에 대한 설명은 랭귀지 도움말 참고하시기 바랍니다. 3 배열크기는 전략실행차트 최대조회갯수가 1만봉이라 1만으로 지정했는데 너무 로드가 심하면 차트의 봉수도 줄이시고 배열크기도 줄여보시기 바랍니다. Array : cc[10000](0); #배열에 In*sertArray(cc, 0, c);///삭제 #대상값은 종가, 대상배열은 cc, 사이즈는 현재까지 봉수 var1 = PercentRankArray(c,cc,Index); Plot1(var1); 즐거운 하루되세요 > 이만스닥 님이 쓴 글입니다. > 제목 : PercentRank 함수 만들어주세요 > 안녕하세요 어느덧 2월도 갑니다..항상 건강하십쇼 다름이 아니라 엑셀의 PercentRank 기능을 예스랭귀지에서 사용하고 싶은데 없어서 문의드립니다. https://support.microsoft.com/ko-kr/office/percentrank-%ED%95%A8%EC%88%98-f1b5836c-9619-4847-9fc9-080ec9024442 참고 부탁드립니다. *값은 변수가 아니라 Array로 저장시켜주세요. (어레이 저장 개수는 예트가 허락하는 한 가장 큰 값으로 부탁드려요) 사유 : variable이면 maxbarsback이 늘어남 PERCENTRANK(1) = Array로 저장되는 모든 값들이라는 범위에서 마지막 Array에 저장된 값의 백분율 순위 PERCENTRANK(2) = 전 봉의 PERCENTRANK(1) 예제에는 Close 값을 Array에 담아서 부탁드립니다. ex) Percentrank(Close) = 차트상 모든 C 값이라는 범위에서 마지막 저장된 C 값의 백분율 순위 밑에껀 정답은 아니지만 혹시 도움 될까봐서 올립니다. /////// /////// // PercentRank 함수 정의 function PercentRank(currentValue, DataArray) vars: vari1(0), numLower(numeric), // 현재 값보다 낮은 값의 개수 totalCount(numeric), // 총 값의 개수 rank(numeric); // 백분위 순위 vari1 = Close; if CurrentBar >= 1 Then { numLower = 0; totalCount = 0; For cnt = 100000 DownTo 1 { vv[cnt] = VV[cnt-1]; if vv[cnt] > 0 Then { if dataArray[value] < currentValue then numLower = numLower + 1; totalCount = totalCount+1 } } vv[0] = vari1 } // 백분위 순위 계산 rank = (numLower / totalCount) * 100; // 함수 결과 반환 PercentRank = rank; percentileRank = PercentRank(Close) /////// ///////