커뮤니티

문의 드립니다.

프로필 이미지
아틀라스
2011-11-07 14:39:25
351
글번호 44319
답변완료
수고가 많으십니다. 안녕하세요 예스스탁입니다. input : P(500); var : RR(0),cnt(0),count(0),sum(0),maR(0),stdv(0),SumSqrt(0),Counter(0),AAA(0),Stdr(0); Array : R[500](0); count = 0; for cnt = 0 to 1000 { if stime[cnt] > 91500 and stime[cnt] < 145000 Then{ R[count] = H[cnt]-L[cnt]; count = count+1; if count == P-1 Then cnt = 1111; } } if count == P-1 Then{ sum = 0; for cnt = 0 to P-1{ sum = sum +R[cnt]; } maR = sum/P; SumSqrt = 0; For Counter = 0 To P - 1 { SumSqrt = SumSqrt + (R[Counter] - maR) * (R[Counter] - maR); } Stdr = SquareRoot(SumSqrt / P); } plot1(Mar);#레인지평균 plot2(Stdr);#표준편차 즐거운 하루되세요 5분봉으로 최근 500개의 레인지, 9시에서 9시 15분까지의 수치와 14시 50분 ~ 장종료까지의 수치를 제외하고 평균, 빼려고 하는 구간의 수치를 스킵하고 싶은데 잘 되지를 않는군요. 추가로 표준편차. 1. 답변해 주신 식에서 (#3항)은 삭제 가능한가요? 2. 배열변수에서 값을 임의의 방에 저장시 문제점은 없나요?(데이타 이동 등) 3. 중복 for문을 사용할 경우 데이타 처리시간이 많이 소요 되지 않나요? 안녕하세요 예스스탁입니다. for cnt1 = 50 to 200 {#1 sum[cnt1] = 0;#2 if CC[cnt1-1] != 0 then{#3 for cnt2 = 0 to 199 {#4 if cnt2 < cnt1 Then#5 sum[cnt1] = sm[cnt1]+CC[cnt2];#6 } } mav[cnt1] = sum[cnt1]/cnt1;#7 } 위내용은 중복 for문이 이용된 식으로 상단의 for문에 값이 한번 저장되면 하단의 for문은 여러번 루프를 돌면서 값을 계산하는 &#44162;입니다. 그리고 아래의 식에서, HH = mav[50]; for cnt3 = 50 to 200{ if Mav[cnt3] > HH Then HH = mav[cnt3]; } 최대값이 뿐만 아니라 상위 10개 이평선의 값을 구하고 싶습니다. 감사합니다. 안녕하세요 예스스탁입니다. for cnt1 = 50 to 200 {#1 sum[cnt1] = 0;#2 if CC[cnt1-1] != 0 then{#3 for cnt2 = 0 to 199 {#4 if cnt2 < cnt1 Then#5 sum[cnt1] = sm[cnt1]+CC[cnt2];#6 } } mav[cnt1] = sum[cnt1]/cnt1;#7 } 위내용은 중복 for문이 이용된 식으로 상단의 for문에 값이 한번 저장되면 하단의 for문은 여러번 루프를 돌면서 값을 계산하는 &#44162;입니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-11-01 10:01:27

1. #3을 삭제하시면 안됩니다. 해당 내용이 없으면 가령 전체 30개의공간에만 값이 저장된 상태인데(나머지는 0) 50개방의 값을 합산하여 50으로 나누게 됩니다. 2. 이평의 기간값이상으로 설정해 주시면 다른 특별한 문제는 없습니다. 3. 반복적으로 계산되는 식이므로 시간이 다소 소요됩니다. 4. input : Atime(9); var : cnt(0),HH(0),cnt3(0),cnt2(0),cnt1(0),Nth(0),tempmax(0),mavp(0),tempIndex(0); Array : CC[201](0),sum[201](0),mav[201](0), NTHVALUE[54](0); var1 = TimeToMinutes(stime)%Atime; if dayindex() == 0 or (var1 <= var1[1] and stime > stime[1]) or stime == 151500 Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; for cnt1 = 50 to 200 { sum[cnt1] = 0; if CC[cnt1-1] != 0 then{ for cnt2 = 0 to 199 { if cnt2 < cnt1 Then sum[cnt1] = sum[cnt1]+CC[cnt2]; } } mav[cnt1] = sum[cnt1]/cnt1; } For Nth = 1 to 10 #1~10 순위까지 { tempmax = -99999999; #최기값은 낮은값 For mavp = 50 to 200# mav[50]~mav[200] { if ( mav[mavp] > tempmax ) then #50~200이평값을 비교해 최대값이 나오면 { tempmax = mav[mavp];#temmax에 해당 이평값 저장 tempIndex = mavp;#기간값 저장 } } NTHVALUE[Nth] = tempmax;#해당순위의 공간에 tempmax값을 저장 mav[tempIndex] = -99999999;#다음 순위 계산을 위해 해당 이평값은 낮은값을 부여 } plot1(NTHVALUE[1]); plot2(NTHVALUE[2]); plot3(NTHVALUE[3]); plot4(NTHVALUE[4]); plot5(NTHVALUE[5]); plot6(NTHVALUE[6]); plot7(NTHVALUE[7]); plot8(NTHVALUE[8]); plot9(NTHVALUE[9]); plot10(NTHVALUE[10]); 즐거운 하루되세요 > 아틀라스 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 수고가 많으십니다. 1. 답변해 주신 식에서 (#3항)은 삭제 가능한가요? 2. 배열변수에서 값을 임의의 방에 저장시 문제점은 없나요?(데이타 이동 등) 3. 중복 for문을 사용할 경우 데이타 처리시간이 많이 소요 되지 않나요? 안녕하세요 예스스탁입니다. for cnt1 = 50 to 200 {#1 sum[cnt1] = 0;#2 if CC[cnt1-1] != 0 then{#3 for cnt2 = 0 to 199 {#4 if cnt2 < cnt1 Then#5 sum[cnt1] = sm[cnt1]+CC[cnt2];#6 } } mav[cnt1] = sum[cnt1]/cnt1;#7 } 위내용은 중복 for문이 이용된 식으로 상단의 for문에 값이 한번 저장되면 하단의 for문은 여러번 루프를 돌면서 값을 계산하는 &#44162;입니다. 그리고 아래의 식에서, HH = mav[50]; for cnt3 = 50 to 200{ if Mav[cnt3] > HH Then HH = mav[cnt3]; } 최대값이 뿐만 아니라 상위 10개 이평선의 값을 구하고 싶습니다. 감사합니다. 안녕하세요 예스스탁입니다. for cnt1 = 50 to 200 {#1 sum[cnt1] = 0;#2 if CC[cnt1-1] != 0 then{#3 for cnt2 = 0 to 199 {#4 if cnt2 < cnt1 Then#5 sum[cnt1] = sm[cnt1]+CC[cnt2];#6 } } mav[cnt1] = sum[cnt1]/cnt1;#7 } 위내용은 중복 for문이 이용된 식으로 상단의 for문에 값이 한번 저장되면 하단의 for문은 여러번 루프를 돌면서 값을 계산하는 &#44162;입니다.