커뮤니티
다음 함수식 설명 좀 부탁드립니다.
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;
}