커뮤니티

질문 부탁드립니다

프로필 이미지
yamu
2025-01-03 09:36:43
481
글번호 186836
답변완료
For 문 관련해서 반복 특성에 대해서 궁금한데요 아래 같은 수식의 for 문에서 if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); For cnt = 49 DownTo 1 { ii[cnt] = ii[cnt-1]; } ii[0] = Index; if ii[1] > 0 and ii[0] >= ii[1]+5 then { if (ii[1] >= ii[2]+5 and ii[2] > 0) or ii[2] == 0 Then { StartBarIndex = ii[1]; } Else { if ii[1] < ii[2]+5 and ii[2]>0 and ii[3] ==0 Then { startbarindex = ii[2]; } StartBarIndex = 0; For cnt = 1 to 49 { if ii[cnt] >= ii[cnt+1]+5 and ii[cnt+1] > 0 Then { StartBarIndex = ii[cnt+1]; } } } 만약 cnt값이 3 일때 조건이 true 라면 거기서 for loop 이 중단되고 startbarindex 에 ii[4] 가 들어가는게 맞죠? 그런데 var1 = Index; var2 = var1[1]; var3 = H; value1 = 0; Value2 = 0; for cnt = 1 to (var1-var2)-1 { if h[cnt] > var3 Then { value1 = value1 + H[cnt]; Value2 = Value2 + 1; } } if Value2 >= 3 Then value3 = value1/Value2; Else Value3 = 0; 이럴때는 var3 보다 큰 고가값을 찾으면 중단되는게 아니라 루프 횟수가 끝날때까지 계속 탐색을 하는데 위의 경우와 이 경우의 차이가 뭔지 헷갈립니다 ***그리고 이 식에서 가장 처음 조건을 만족하는 h값은 h[1] 을 변수에 저장하면 되는데, 가장 마지막에 만족하는 h값을 찾으려면 어떻게 해야할까요?? 답변 부탁드립니다 감사합니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-01-03 14:36:37

안녕하세요 예스스탁입니다. 이전에 원격으로 촉박하게 작성해 드려서 for문이 멈추는 내용을 추가하지 못했습니다. 현재 무조건 for이 끝까지 수행하게 되어 있어 내용을 수정해 드립니다. 식도 좀더 간략하게 수정했습니다.주석 내용 참고하시기 바랍니다. if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); For cnt = 49 DownTo 1 { ii[cnt] = ii[cnt-1]; } ii[0] = Index; #최근 2개 지점 차이가 5개봉 이상이면 수행 #최근 2개 지점 차이가 5개봉 미만이면 계산을 안함 if ii[0] >= ii[1]+5 and ii[1] > 0 then { #시작인덱스는 초기값은 [1] StartBarIndex = ii[1]; #루프수행 For cnt = 1 to 49 { #배열에서 순차적으로 이전값 [cnt]와 [cnt+1]을 가져와 #2개지점 차이가 5개봉 미만이면 먼지점인 [cnt+1] 값을 시작봉인덱스를 저장 if ii[cnt+1] > 0 && ii[cnt] < ii[cnt+1]+5 Then { StartBarIndex = ii[cnt+1]; } #먼지점인 [cnt+1] 배열저장값이 0인 배열이 나오거나 (저장된 값이 없음) #2개지점 차이가 5개봉 이상이면 #For수행을 멈추고 빠져나감 if ii[cnt+1] == 0 or (ii[cnt+1] > 0 && ii[cnt] >= ii[cnt+1]+5) Then { cnt = 50;#For문의 초기값과 최종값을 받는 변수에 최종값보다 큰값지정해서 루프에서 빠져나감 } } } } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 질문 부탁드립니다 > For 문 관련해서 반복 특성에 대해서 궁금한데요 아래 같은 수식의 for 문에서 if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); For cnt = 49 DownTo 1 { ii[cnt] = ii[cnt-1]; } ii[0] = Index; if ii[1] > 0 and ii[0] >= ii[1]+5 then { if (ii[1] >= ii[2]+5 and ii[2] > 0) or ii[2] == 0 Then { StartBarIndex = ii[1]; } Else { if ii[1] < ii[2]+5 and ii[2]>0 and ii[3] ==0 Then { startbarindex = ii[2]; } StartBarIndex = 0; For cnt = 1 to 49 { if ii[cnt] >= ii[cnt+1]+5 and ii[cnt+1] > 0 Then { StartBarIndex = ii[cnt+1]; } } } 만약 cnt값이 3 일때 조건이 true 라면 거기서 for loop 이 중단되고 startbarindex 에 ii[4] 가 들어가는게 맞죠? 그런데 var1 = Index; var2 = var1[1]; var3 = H; value1 = 0; Value2 = 0; for cnt = 1 to (var1-var2)-1 { if h[cnt] > var3 Then { value1 = value1 + H[cnt]; Value2 = Value2 + 1; } } if Value2 >= 3 Then value3 = value1/Value2; Else Value3 = 0; 이럴때는 var3 보다 큰 고가값을 찾으면 중단되는게 아니라 루프 횟수가 끝날때까지 계속 탐색을 하는데 위의 경우와 이 경우의 차이가 뭔지 헷갈립니다 ***그리고 이 식에서 가장 처음 조건을 만족하는 h값은 h[1] 을 변수에 저장하면 되는데, 가장 마지막에 만족하는 h값을 찾으려면 어떻게 해야할까요?? 답변 부탁드립니다 감사합니다