커뮤니티

다음 함수식 설명 좀 부탁드립니다.

프로필 이미지
다니엘87
2014-11-04 23:12:00
163
글번호 80093
답변완료
사용자 함수 중 swinghigh 함수입니다. 응용을 할 부분이 많을 것 같아 보았으나 이해가 잘 되지 않습니다. 괜찮으시다면 설명 좀 부탁 드려도 될까요? < SwingHigh > ------------------------------------------------------------- Input : Occur(NumericSimple), Value(NumericSeries), Left(NumericSimple), Right(NumericSimple), Length(NumericSimple); Var : Result(0), X(0), J(0), Z(0), Ltrue(FALSE), Counter(0), Found(FALSE); if CurrentBar >= Length - 1 then { Result = -1; Z = 0; X = Right; Counter = 0; Found = FALSE; while Counter < Length && X + Left < Length && Found == FALSE Begin J = X + Left; Ltrue = TRUE; while Ltrue && J > X Begin if Value[X] < Value[J] then Ltrue = FALSE; J = J - 1; End J = X - 1; while Ltrue && J >= X - Right Begin if Value[X] <= Value[J] then Ltrue = FALSE; J = J - 1; End if LTrue == TRUE then { Z = Z + 1; if Z >= Occur then { Result = Value[X]; Found = TRUE; } } X = X + 1; Counter = Counter + 1; End if Z == 0 then SwingHigh = -1; else SwingHigh = Result; }
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-11-05 12:59:58

안녕하세요 예스스탁입니다. 해당 함수는 Left와 right로 봉수를 지정해서 기준봉의 값이 기준봉의 좌측봉등의 값보다는 크거나 같고 우측봉들의 값보다는 큰상태를 Length지정한 봉안에 찾게 됩니다. 기존봉은 현재봉에서 Right로 지정한 봉수의 이전봉입니다. 즉 swinghigh(1,H,5,3,20)이라고 지정하면 H[3]이 기준봉이 되고 해당 봉 이전의 5개봉이 좌측봉 해당봉 이후의 3개봉이 우측봉이 되고 아래 조건이 충족이 되면 H[3]값을 리턴하게 됩니다. H[3] >= max(H[4],H[5],H[6],H[7],H[8]) and H[3] > max(H[2],H[1],H[0]) 위조건이 만족하지 않으면 -1입니다. 또한 위조건을 20개봉안에 여러면 만족할 경우가 있으므로 첫 매개변수로 1,2,3,으로 지정해서 현재봉에서 가까운 순으로 값을 리턴받게 만들어져 있습니다. 위 개념으로 작성된 식입니다. Input : Occur(NumericSimple), Value(NumericSeries), Left(NumericSimple), Right(NumericSimple), Length(NumericSimple); Var : Result(0), X(0), J(0), Z(0), Ltrue(FALSE), Counter(0), Found(FALSE); #수식계산에 필요한 봉갯수 이상이 되면 if CurrentBar >= Length - 1 then { //결과값 초기값은 -1 Result = -1; Z = 0; X = Right; Counter = 0; Found = FALSE; //Length로 지정한 봉까지만 루프를 실행 while Counter < Length && X + Left < Length && Found == FALSE Begin //먼저 기준봉을 기준으로 좌측봉에서 조건충족여부를 판단함 J = X + Left; //초기값은 true Ltrue = TRUE; //좌측봉들중 기준봉의 value보다 큰값이 있으면 //Ltrue를 false로 만듬 while Ltrue && J > X Begin if Value[X] < Value[J] then Ltrue = FALSE; J = J - 1; End //좌측봉에서 모두조건이 만족해서 Ltrue가 true이면 //우측봉에서 조건만족여부를 판단 J = X - 1; //우측봉들의 value가 기준봉의 value보다 크거나 같은 것이 나오면 //Ltrue를 false만듬 while Ltrue && J >= X - Right Begin if Value[X] <= Value[J] then Ltrue = FALSE; J = J - 1; End //좌우측봉들에서 모두 조건이 충족되면 //기준봉의 값을 리턴 if LTrue == TRUE then { Z = Z + 1; if Z >= Occur then { Result = Value[X]; Found = TRUE; } } X = X + 1; Counter = Counter + 1; End if Z == 0 then SwingHigh = -1; else SwingHigh = Result; } 즐거운 하루되세요 > 다니엘87 님이 쓴 글입니다. > 제목 : 다음 함수식 설명 좀 부탁드립니다. > 사용자 함수 중 swinghigh 함수입니다. 응용을 할 부분이 많을 것 같아 보았으나 이해가 잘 되지 않습니다. 괜찮으시다면 설명 좀 부탁 드려도 될까요? < SwingHigh > ------------------------------------------------------------- Input : Occur(NumericSimple), Value(NumericSeries), Left(NumericSimple), Right(NumericSimple), Length(NumericSimple); Var : Result(0), X(0), J(0), Z(0), Ltrue(FALSE), Counter(0), Found(FALSE); if CurrentBar >= Length - 1 then { Result = -1; Z = 0; X = Right; Counter = 0; Found = FALSE; while Counter < Length && X + Left < Length && Found == FALSE Begin J = X + Left; Ltrue = TRUE; while Ltrue && J > X Begin if Value[X] < Value[J] then Ltrue = FALSE; J = J - 1; End J = X - 1; while Ltrue && J >= X - Right Begin if Value[X] <= Value[J] then Ltrue = FALSE; J = J - 1; End if LTrue == TRUE then { Z = Z + 1; if Z >= Occur then { Result = Value[X]; Found = TRUE; } } X = X + 1; Counter = Counter + 1; End if Z == 0 then SwingHigh = -1; else SwingHigh = Result; }