커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

stock객체의 getRank() 함수는 내부적으로 sort로 구현되어 있나요?

양석우 2021.11.10 00:56 조회수  196 추천 1

현재 제 코드에서 sort()를 호출했을 때  일부분만 정렬되는 현상이 발생하고 있습니다. getRank()로 대체하여 구현해보려고 하는데 내부적으로 sort()로 구현되어있다면 동일한 문제를 내포하고 있을것 같아 질문드립니다.

댓글 8
경험상 sort()함수에서 일부만 정렬된다면 정렬하고자 하는 값이 어떤 종목들에 대해서는 Infinity나 NaN 같은 잘못된 값이 섞여 있는 경우입니다. 해당 지표값을 계산하는 함수에서 0으로 나누기에 대한 예외처리를 해 주셔서 어떻게든 숫자로 만드시고 정렬을 시키시면 제대로 동작할 것으로 생각됩니다.
Joseph 2021.11.10 01:08
그부분은 예외처리한 상태입니다. NaN과 Infinity가 섞여있지 않은 배열임을 눈으로 직접 확인했고, 문자열이 아닌데도 부분적으로만 정렬되어 있습니다. 일부만 정렬된 배열에 대해서 다시한번 sort()를 호출했더니 제대로 정렬된것을 확인하여 현재는 정렬이 필요한 모든 배열에 대해서 sort()를 두번씩 호출하도록 고쳐서 쓰고있으나, 좋은방법은 아닌것 같아 여쭤봅니다.
양석우 2021.11.10 10:57
양석우님 안녕하세요. 크롬 예전 버전을 쓰고 계시다면 업데이트를 해보시기 바랍니다. 그렇지 않으면 Unstable sort 문제가 발생한다고 하네요. 아래 링크를 참조하세요.
https://www.dmcinfo.com/latest-thinking/blog/id/9312/sorting-in-javascript-handling-google-chromes-unstable-sort
https://nhj12311.tistory.com/68
소포클레스 2021.11.10 11:34
소포클레스님, 백테스트 실행이 인텔리퀀트의 서버에서 수행되는것으로 알고있었는데 아닌가요? 아니면 스크립트 컴파일만 로컬에서 실행되나요? 제가 웹쪽에 문외한이라 잘 이해가 안가네요.
양석우 2021.11.10 11:49
양석우님 제가 인텔리퀀트의 직원이 아니기 때문에 어디서 sort 하는지 알수는 없습니다. 직원분이 답변을 주셔야 알 수 있습니다
소포클레스 2021.11.10 13:28
해당 코드 스니펫과 해당 모듈의 입출력 값을 올려주시면 명확하게 판단할 수 있을것 같네요.
Europa 2021.11.10 13:49
전략 스크립트는 브라우저가 아닌 서버에서 실행되는 것은 맞습니다.
그리고, 배열에 문제가 없다면 sort() 함수에 문제는 없을 것으로 생각됩니다.
Europa님 말씀처럼 해당 부분의 코드를 보여 주실 수 있으면 원인을 파악해 볼 수 있을 것 같습니다.
인텔리퀀트 2021.11.11 23:57
그리고, 원래 질문하신 getRank()함수에 대해서 말씀 드리면, sort()함수를 사용하지 않고 직접 두 값을 비교하여 계산하도록 하고 있으니 참고하시기 바랍니다.
인텔리퀀트 2021.11.12 11:19
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글