커뮤니티

수식 문의 드립니다

프로필 이미지
파트라
2021-06-27 17:20:09
1898
글번호 150306
답변완료
두 가지 문의사항이 있습니다 1번 문의사항 Excel로 치자면 LARGE, SMALL 함수를 사용자 함수화 시키고 싶습니다. NthMaxList 설명 : 리스트에 포함된 값 중에서 N번째 큰 값을 구함. 항목은 모두 수치 값이어야 함 함수 : NthMaxList(N,num1,num2,num3,num4,….) 예제 : NthMaxList (3,10, 20, 30, 40) 20 반환 NthMaxList (3, Open, HH, ma(c,5), dayclose(1)) 지정한 4개의 항목 값 중 세번째 높은 값을 구함 . NthMaxList를 사용하자니 함수 안에 일일이 값을 넣어주어야 하니 수식이 너무 길어지더라고요 예를 들어서 현재 봉 기준으로 최근 5개 봉의 종가 중 2번째로 큰 값을 구하려면 NthMaxList(2, C, C[1], C[2], C[3], C[4]) 이렇게 사용하면 되는 것 같은데 현재 봉 기준으로 특정 과거 시점까지 (N개라고 가정), x번째로 큰 값을 구한다 쳤을때 N개가 많아지면.. 많이 불편한데 Excel에 있는 LARGE, SMALL 함수는 LARGE(범위, x) 라고 간단히 쓸 수 있잖아요? 이것을 예스랭귀지로 사용자함수화 시킬 수 없을까요? 이를테면 Large(N, 조건, x) 이렇게 해서 N : Navigation 기간 설정 조건 : Open, High, Low, Close x : 몇 번째인지 N을 갖고 for문을 작성하거나 array를 활용해야하나..? 코딩 실력이 미진하여서 만들기가 너무 난해하네요.. --------------------------------------------------------- 2 번 문의사항 만약에 60분봉을 쓴다고 가정하였을 때에 하루에 봉의 개수는 7개가 나오잖아요? 만약 DayIndex가 7이라면(오늘의 마지막 봉이라면) -> ABS(하루 전 7번봉의 시가 - 오늘의 7번봉의 종가) 아니라면 이전의 자기 자신의 값을 지정 이렇게 설정하려면 수식작성을 어떻게 해야하나요? 설명을 좀 애매하게 적은 것 같은데 구체적으로 예를 들자면 그저께 7번봉 - 값 계산 -> 2 어제 1 - 2 2 - 2 3 - 2 4 - 2 5 - 2 6 - 2 7 - 값 계산 -> 4란 값 산출 오늘 1 - 4 2 - 4 3 - 4 4 - 4 5 - 4 6 - 4 7 - 값 계산 -> 3란 값 산출 Var : Calculation(0); If Index > 30 and DayIndex == 7 Then Calculation = ABS(Open[7] - Close[0]); Else Calculation = Calculation[1]; Plot1(Calculation); 이렇게 작성해보았는데 지표창에 아무것도 출력이 되지 않습니다 isNan(value) == false 를 사용해야 하는 것 같기도 한데.. 결측값 처리를 어떻게 해야할지 모르겠습니다.. 제가 첫 프로그래밍 언어가 YesLanguage이고 비전공자이다 보니까 어렵네요.. ------------------------------------------------------------------------- 늘 많은 도움 받고 있습니다! 꼭 좀 도와주세요ㅠㅠㅠㅠ
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-06-28 14:10:26

안녕하세요 예스스탁입니다. 1 NthHighest,NthLowest 함수 이용하시면 됩니다. NthHighest(2,C,5) --> 최근 5개의 종가중 2번째 큰값 2 dayindex는 당일 첫봉을 0으로 시작하므 dayindex == 6 또는 dayindex+1 == 7로 지정하셔야 합니다. var : Calculation(0); if DayIndex+1 == 7 Then { var1 = O; Var2 = var1[1]; if var2 > 0 Then Calculation = abs(Var2-C); } if Calculation > 0 Then Plot1(Calculation); 즐거운 하루되세요 > 파트라 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다 > 두 가지 문의사항이 있습니다 1번 문의사항 Excel로 치자면 LARGE, SMALL 함수를 사용자 함수화 시키고 싶습니다. NthMaxList 설명 : 리스트에 포함된 값 중에서 N번째 큰 값을 구함. 항목은 모두 수치 값이어야 함 함수 : NthMaxList(N,num1,num2,num3,num4,….) 예제 : NthMaxList (3,10, 20, 30, 40) 20 반환 NthMaxList (3, Open, HH, ma(c,5), dayclose(1)) 지정한 4개의 항목 값 중 세번째 높은 값을 구함 . NthMaxList를 사용하자니 함수 안에 일일이 값을 넣어주어야 하니 수식이 너무 길어지더라고요 예를 들어서 현재 봉 기준으로 최근 5개 봉의 종가 중 2번째로 큰 값을 구하려면 NthMaxList(2, C, C[1], C[2], C[3], C[4]) 이렇게 사용하면 되는 것 같은데 현재 봉 기준으로 특정 과거 시점까지 (N개라고 가정), x번째로 큰 값을 구한다 쳤을때 N개가 많아지면.. 많이 불편한데 Excel에 있는 LARGE, SMALL 함수는 LARGE(범위, x) 라고 간단히 쓸 수 있잖아요? 이것을 예스랭귀지로 사용자함수화 시킬 수 없을까요? 이를테면 Large(N, 조건, x) 이렇게 해서 N : Navigation 기간 설정 조건 : Open, High, Low, Close x : 몇 번째인지 N을 갖고 for문을 작성하거나 array를 활용해야하나..? 코딩 실력이 미진하여서 만들기가 너무 난해하네요.. --------------------------------------------------------- 2 번 문의사항 만약에 60분봉을 쓴다고 가정하였을 때에 하루에 봉의 개수는 7개가 나오잖아요? 만약 DayIndex가 7이라면(오늘의 마지막 봉이라면) -> ABS(하루 전 7번봉의 시가 - 오늘의 7번봉의 종가) 아니라면 이전의 자기 자신의 값을 지정 이렇게 설정하려면 수식작성을 어떻게 해야하나요? 설명을 좀 애매하게 적은 것 같은데 구체적으로 예를 들자면 그저께 7번봉 - 값 계산 -> 2 어제 1 - 2 2 - 2 3 - 2 4 - 2 5 - 2 6 - 2 7 - 값 계산 -> 4란 값 산출 오늘 1 - 4 2 - 4 3 - 4 4 - 4 5 - 4 6 - 4 7 - 값 계산 -> 3란 값 산출 Var : Calculation(0); If Index > 30 and DayIndex == 7 Then Calculation = ABS(Open[7] - Close[0]); Else Calculation = Calculation[1]; Plot1(Calculation); 이렇게 작성해보았는데 지표창에 아무것도 출력이 되지 않습니다 isNan(value) == false 를 사용해야 하는 것 같기도 한데.. 결측값 처리를 어떻게 해야할지 모르겠습니다.. 제가 첫 프로그래밍 언어가 YesLanguage이고 비전공자이다 보니까 어렵네요.. ------------------------------------------------------------------------- 늘 많은 도움 받고 있습니다! 꼭 좀 도와주세요ㅠㅠㅠㅠ