안녕하세요.
선형회귀선상의 극대점의 봉 인덱스를 구하는 함수를 다음과 같이 작성했는데 프로그램이 멈추고 실행이 되지 않습니다. 문제가 무엇인지 알려 주시면 감사하겠습니다.
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;
}
}
}
}
}
}
}