커뮤니티

선형회귀선상의 극대점

프로필 이미지
김지후
2024-07-05 08:22:28
507
글번호 181231
답변완료
안녕하세요. 선형회귀선상의 극대점의 봉 인덱스를 구하는 함수를 다음과 같이 작성했는데 프로그램이 멈추고 실행이 되지 않습니다. 문제가 무엇인지 알려 주시면 감사하겠습니다. Input: N(Numeric); If Index < N Then { GetLocalMaxIndex = NaN; } Else { If Index[N] < 2 Then { GetLocalMaxIndex = NaN; } Else { If LRS(L[N], 2) > 0 and LRS(L[N + 1], 2) < 0 Then { GetLocalMaxIndex = Index[N]; } Else { Var: i(1); Condition1 = True; While Condition1 == True { If Index < N + i Then { GetLocalMaxIndex = NaN; Condition1 = False; // Break the While loop. } Else { If Index[N + i] < 2 Then { GetLocalMaxIndex = NaN; Condition1 = False; // Break the While loop. } Else { If LRS(L[N + i], 2) > 0 and LRS(L[N + i + 1], 2) < 0 Then { GetLocalMaxIndex = Index[N + i]; Condition1 = False; // Break the While loop. } Else { i = i + 1; } } } } } } }
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-07-05 16:34:45

안녕하세요 예스스탁입니다. 1 식상 가장 최근 LRS가 0을 돌파하는 봉의 인덱스를 GetLocalMaxIndex에 저장하는 내용인 것 같습니다. input중 N은 어떤 용도로 사용하시는지 알기 어렵습니다. 최근 0선 돌파봉의 인덱스를 리턴하게 수정해 드립니다. var : LS(0),i(0); LS = LRS(L,2); i = 0; Condition1 = true; While Condition1 == True { If IsNan(LS[i+1]) == False Then { if LS[i] > 0 and LS[i + 1] < 0 Then { GetLocalMaxIndex = Index[i]; Condition1 = False; // Break the While loop. } Else { i = i + 1; } } Else { GetLocalMaxIndex = Nan; Condition1 = False; } } 2 식을 차트에 적용되면 차트 첫봉부터 마지막봉으로 읽어들어가게 됩니다. 그러므로 현재시점에서 과거 특정조건을 만족하는 봉을 루프를 돌려서 찾으셔도 되지만 아래와 같이 특정조건 만족시마다 필요한 값을 저장해 리턴하게 구현하셔도 됩니다. var : LS(0); LS = LRS(L,2); if LS > 0 and LS[1] < 0 Then { var1 = Index; } if var1 > 0 Then GetLocalMaxIndex = var1; Else GetLocalMaxIndex = Nan; 즐거운 하루되세요 > 김지후 님이 쓴 글입니다. > 제목 : 선형회귀선상의 극대점 > 안녕하세요. 선형회귀선상의 극대점의 봉 인덱스를 구하는 함수를 다음과 같이 작성했는데 프로그램이 멈추고 실행이 되지 않습니다. 문제가 무엇인지 알려 주시면 감사하겠습니다. Input: N(Numeric); If Index < N Then { GetLocalMaxIndex = NaN; } Else { If Index[N] < 2 Then { GetLocalMaxIndex = NaN; } Else { If LRS(L[N], 2) > 0 and LRS(L[N + 1], 2) < 0 Then { GetLocalMaxIndex = Index[N]; } Else { Var: i(1); Condition1 = True; While Condition1 == True { If Index < N + i Then { GetLocalMaxIndex = NaN; Condition1 = False; // Break the While loop. } Else { If Index[N + i] < 2 Then { GetLocalMaxIndex = NaN; Condition1 = False; // Break the While loop. } Else { If LRS(L[N + i], 2) > 0 and LRS(L[N + i + 1], 2) < 0 Then { GetLocalMaxIndex = Index[N + i]; Condition1 = False; // Break the While loop. } Else { i = i + 1; } } } } } } }