커뮤니티

봉 값 구하기

프로필 이미지
히익
2022-06-17 12:25:55
1336
글번호 159945
답변완료
안녕하세요 또 다른 질문 드립니다. 아래 수식에서 for문이 시작되는 부분부터 예스랭귀지 메뉴얼을 참고하였는데, 디버깅을 보면 SHbar는 계속 -1 이 나옵니다. var1 값과 동일한 이전 고가의 봉 값을 구하려면 어떻게 해야 할까요? input : Left(1),right(1); var : T(0); var1=0; Var2=0; if SwingHigh(1,H,Left,right,left+right+1) != -1 Then { T = 1; if T != T[1] Then var1 = H[right]; Else { if H[right] > var1 Then var1 = H[right]; } } if Swinglow(1,L,Left,right,left+right+1) != -1 Then { T = -1; if T != T[1] Then var2 = L[right]; Else { if L[right] < var2 Then var2 = L[right]; } } var:cnt(0),SHbar(0); SHbar=-1; For cnt = 0 to 99 Begin If H[cnt] == var1 Then SHbar=cnt; cnt=999; End; If Var1>0 Then Plot1(Var1,"하이"); If Var2>0 Then Plot2(Var2,"로우"); MessageLog("%.2f",SHbar);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-06-17 16:51:53

안녕하세요 예스스탁입니다. 1 For cnt = 0 to 99 Begin If H[cnt] == var1 Then SHbar=cnt; cnt=999; End; 현재 for문에서 cnt에 0이 할당되면 cnt가 999가 되어 루프가 1회뿐이 돌지 않습니다. 아래와 같이 수정하셔야 합니다. For cnt = 0 to 99 Begin If H[cnt] == var1 Then { SHbar=cnt; cnt=999; } End; 2 #If Var1>0 Then Plot1(Var1,"하이"); #If Var2>0 Then Plot2(Var2,"로우"); 위와 같이 if문 제거하고 var1,var2확인해 보시기 바랍니다. var1과 var2가 스윙하이와 스윙로우가 발생한 봉에서만 값을 가지고 나머지는 모두 0입니다. 그러므로 스윙하이가 발생한 봉이 아니면 모두 기본값인 -1이 나오게 됩니다. 3 스윙하이 발생 후 봉갯수를 카운트 하고자 하시면 간단히 아래와 같이 처리하시면 됩니다. input : Left(1),right(1); var : T(0); var1=0; Var2=0; if SwingHigh(1,H,Left,right,left+right+1) != -1 Then { T = 1; if T != T[1] Then var1 = H[right]; Else { if H[right] > var1 Then var1 = H[right]; } SHbar = right; } Else SHbar = SHbar+1; 즐거운 하루되세요 > 히익 님이 쓴 글입니다. > 제목 : 봉 값 구하기 > 안녕하세요 또 다른 질문 드립니다. 아래 수식에서 for문이 시작되는 부분부터 예스랭귀지 메뉴얼을 참고하였는데, 디버깅을 보면 SHbar는 계속 -1 이 나옵니다. var1 값과 동일한 이전 고가의 봉 값을 구하려면 어떻게 해야 할까요? input : Left(1),right(1); var : T(0); var1=0; Var2=0; if SwingHigh(1,H,Left,right,left+right+1) != -1 Then { T = 1; if T != T[1] Then var1 = H[right]; Else { if H[right] > var1 Then var1 = H[right]; } } if Swinglow(1,L,Left,right,left+right+1) != -1 Then { T = -1; if T != T[1] Then var2 = L[right]; Else { if L[right] < var2 Then var2 = L[right]; } } var:cnt(0),SHbar(0); SHbar=-1; For cnt = 0 to 99 Begin If H[cnt] == var1 Then SHbar=cnt; cnt=999; End; If Var1>0 Then Plot1(Var1,"하이"); If Var2>0 Then Plot2(Var2,"로우"); MessageLog("%.2f",SHbar);