커뮤니티

지표식 부탁드립니다.

프로필 이미지
양치기
2017-07-06 23:56:25
134
글번호 111102
답변완료
항상 도움 주셔서 감사합니다. 요청식) 일정기간 예를 들면 20봉 동안의 종가가 일정 범위에 가장 많이 있는 봉들의 평균값을 구하고 싶습니다. 범위는 20봉 동안의 ((최고가-현재봉)/(최고가-최저가))*100 하여 총 0%~100%까지 총 10개의 범위를 나누어 줍니다. 20개 봉들을 각각 위 식으로 계산하여 해당 범위에 봉들의 갯수를 카운트 하고 해당 범위의 값들을 더한후 갯수로 나누어 평균값을 구합니다. 그 다음 10개 범위에서 가장 갯수가 많은 범위의 평균값을 지표로 표현하고 싶습니다. 아래는 제가 작성한 식인데 평균값이 표현되지 않습니다. 왜 평균값이 안나오는지 수식 검토 부탁드립니다. input : period(20) ; var : hi(0), lo(0), gap(0) ; var : count(0), temp(0) ; var : num(0),num2(0),num3(0),num4(0),num5(0),num6(0),num7(0),num8(0),num9(0),num10(0); var : sum(0),sum2(0),sum3(0),sum4(0),sum5(0),sum6(0),sum7(0),sum8(0),sum9(0),sum10(0) ; var : cnt(0),hh(0),hii(0); Array : VV[11](0); hi = highest(C,period) ; lo = lowest(C,period) ; gap = hi-lo ; for count = 1 to period { temp = ((hi- c[count])/gap)*100 ; if temp >= 90 then num = num + 1 ; sum = sum + c[count] ; if temp < 90 and temp >= 80 then num2 = num2 + 1 ; sum2 = sum2 + c[count] ; if temp < 80 and temp >= 70 then num3 = num3 + 1 ; sum3 = sum3 + c[count] ; if temp < 70 and temp >= 60 then num4 = num4 + 1 ; sum4 = sum4 + c[count] ; if temp < 60 and temp >= 50 then num5 = num5 + 1 ; sum5 = sum5 + c[count] ; if temp < 50 and temp >= 40 then num6 = num6 + 1 ; sum6 = sum6 + c[count] ; if temp < 40 and temp >= 30 then num7 = num7 + 1 ; sum7 = sum7 + c[count] ; if temp < 30 and temp >= 20 then num8 = num8 + 1 ; sum8 = sum8 + c[count] ; if temp < 20 and temp >= 10 then num9 = num9 + 1 ; sum9 = sum9 + c[count] ; if temp < 10 then num10 = num10 + 1 ; sum10 = sum10 + c[count] ; } vv[1] = sum/num ; vv[2] = sum2/num2 ; vv[3] = sum3/num3 ; vv[4] = sum4/num4 ; vv[5] = sum5/num5 ; vv[6] = sum6/num6 ; vv[7] = sum7/num7 ; vv[8] = sum8/num8 ; vv[9] = sum9/num9 ; vv[10] = sum10/num10 ; HH = VV[1]; Hii = 1; for cnt = 1 to 10{ if VV[cnt] > HH Then{ HH = VV[cnt]; Hii = cnt; } } Plot1(vv[Hii]) ;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-07-07 11:02:43

안녕하세요 예스스탁입니다. 1 for문에 의해 각 변수에 값이 누적되므로 매봉마다 계산전에 변수를 초기화해야 합니다. 2 하나의 if문에 종속된 실행문이 2개 이상이면 항상 {}로 묶어주셔야 합니다. 3 수정한 식입니다. input : period(20) ; var : hi(0), lo(0), gap(0) ; var : count(0), temp(0) ; var : num1(0),num2(0),num3(0),num4(0),num5(0),num6(0),num7(0),num8(0),num9(0),num10(0); var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0),sum6(0),sum7(0),sum8(0),sum9(0),sum10(0) ; var : cnt(0),hh(0),hii(0); Array : VV[11](0); hi = highest(C,period) ; lo = lowest(C,period) ; gap = hi-lo ; num1 = 0; sum1 = 0; num2 = 0; sum2 = 0; num3 = 0; sum3 = 0; num4 = 0; sum4 = 0; num5 = 0; sum5 = 0; num6 = 0; sum6 = 0; num7 = 0; sum7 = 0; num8 = 0; sum8 = 0; num9 = 0; sum9 = 0; num10 = 0; sum10 = 0; for count = 1 to period { temp = ((hi- c[count])/gap)*100 ; if temp >= 90 then{ num1 = num1 + 1 ; sum1 = sum1 + c[count] ; } if temp < 90 and temp >= 80 then{ num2 = num2 + 1 ; sum2 = sum2 + c[count] ; } if temp < 80 and temp >= 70 then{ num3 = num3 + 1 ; sum3 = sum3 + c[count] ; } if temp < 70 and temp >= 60 then{ num4 = num4 + 1 ; sum4 = sum4 + c[count] ; } if temp < 60 and temp >= 50 then{ num5 = num5 + 1 ; sum5 = sum5 + c[count] ; } if temp < 50 and temp >= 40 then{ num6 = num6 + 1 ; sum6 = sum6 + c[count] ; } if temp < 40 and temp >= 30 then{ num7 = num7 + 1 ; sum7 = sum7 + c[count] ; } if temp < 30 and temp >= 20 then{ num8 = num8 + 1 ; sum8 = sum8 + c[count] ; } if temp < 20 and temp >= 10 then{ num9 = num9 + 1 ; sum9 = sum9 + c[count] ; } if temp < 10 then{ num10 = num10 + 1 ; sum10 = sum10 + c[count] ; } } vv[1] = sum1/num1 ; vv[2] = sum2/num2 ; vv[3] = sum3/num3 ; vv[4] = sum4/num4 ; vv[5] = sum5/num5 ; vv[6] = sum6/num6 ; vv[7] = sum7/num7 ; vv[8] = sum8/num8 ; vv[9] = sum9/num9 ; vv[10] = sum10/num10 ; HH = VV[1]; Hii = 1; for cnt = 1 to 10{ if VV[cnt] > HH Then{ HH = VV[cnt]; Hii = cnt; } } Plot1(vv[Hii]) ; 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 지표식 부탁드립니다. > 항상 도움 주셔서 감사합니다. 요청식) 일정기간 예를 들면 20봉 동안의 종가가 일정 범위에 가장 많이 있는 봉들의 평균값을 구하고 싶습니다. 범위는 20봉 동안의 ((최고가-현재봉)/(최고가-최저가))*100 하여 총 0%~100%까지 총 10개의 범위를 나누어 줍니다. 20개 봉들을 각각 위 식으로 계산하여 해당 범위에 봉들의 갯수를 카운트 하고 해당 범위의 값들을 더한후 갯수로 나누어 평균값을 구합니다. 그 다음 10개 범위에서 가장 갯수가 많은 범위의 평균값을 지표로 표현하고 싶습니다. 아래는 제가 작성한 식인데 평균값이 표현되지 않습니다. 왜 평균값이 안나오는지 수식 검토 부탁드립니다. input : period(20) ; var : hi(0), lo(0), gap(0) ; var : count(0), temp(0) ; var : num(0),num2(0),num3(0),num4(0),num5(0),num6(0),num7(0),num8(0),num9(0),num10(0); var : sum(0),sum2(0),sum3(0),sum4(0),sum5(0),sum6(0),sum7(0),sum8(0),sum9(0),sum10(0) ; var : cnt(0),hh(0),hii(0); Array : VV[11](0); hi = highest(C,period) ; lo = lowest(C,period) ; gap = hi-lo ; for count = 1 to period { temp = ((hi- c[count])/gap)*100 ; if temp >= 90 then num = num + 1 ; sum = sum + c[count] ; if temp < 90 and temp >= 80 then num2 = num2 + 1 ; sum2 = sum2 + c[count] ; if temp < 80 and temp >= 70 then num3 = num3 + 1 ; sum3 = sum3 + c[count] ; if temp < 70 and temp >= 60 then num4 = num4 + 1 ; sum4 = sum4 + c[count] ; if temp < 60 and temp >= 50 then num5 = num5 + 1 ; sum5 = sum5 + c[count] ; if temp < 50 and temp >= 40 then num6 = num6 + 1 ; sum6 = sum6 + c[count] ; if temp < 40 and temp >= 30 then num7 = num7 + 1 ; sum7 = sum7 + c[count] ; if temp < 30 and temp >= 20 then num8 = num8 + 1 ; sum8 = sum8 + c[count] ; if temp < 20 and temp >= 10 then num9 = num9 + 1 ; sum9 = sum9 + c[count] ; if temp < 10 then num10 = num10 + 1 ; sum10 = sum10 + c[count] ; } vv[1] = sum/num ; vv[2] = sum2/num2 ; vv[3] = sum3/num3 ; vv[4] = sum4/num4 ; vv[5] = sum5/num5 ; vv[6] = sum6/num6 ; vv[7] = sum7/num7 ; vv[8] = sum8/num8 ; vv[9] = sum9/num9 ; vv[10] = sum10/num10 ; HH = VV[1]; Hii = 1; for cnt = 1 to 10{ if VV[cnt] > HH Then{ HH = VV[cnt]; Hii = cnt; } } Plot1(vv[Hii]) ;