안녕하세요 어느덧 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)
///////
///////