커뮤니티

문의 드립니다.

프로필 이미지
아틀라스
2011-11-06 14:22:56
471
글번호 44346
답변완료
빠른 답변 감사합니다. input : p1(2),LENGTH1(20),LENGTH2(60), ## 주봉 보내주신 수식에서 아래부문에 대해서 조금 더 문의 드리고자 합니다. 첫 Nth==1에서는 최대값이 산출되었습니다. 두번째 Nth==2에서는 어떻게 2번째 순위의 이평선이 산출되는지 세부 설명부탁드립니다. 두번째 if문에서 Nth의 역할이 없는데도 산출이 가능한지 궁금합니다. (이평선과 기간값의 차이는 무엇인가요?) 감사합니다. 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]); 즐거운 하루되세요 안녕하세요 예스스탁입니다. input : p1(2),LENGTH1(20),LENGTH2(60), ## 주봉 LENGTH11(20),LENGTH12(60),LENGTH13(120), ## 일봉 Period1(20),Period2(60), ## 주봉 Period11(20),Period12(60),Period13(120); ## 일봉 var : TCHAN1(0),TCHAN2(0),cnt(0), ## 주봉 TCHAN11(0),TCHAN12(0),TCHAN13(0); ## 일봉 Var : Sum1(0), Counter1(0), CSum1(0),Wma1(0),SumSqrt1(0),Std1(0); ## 주봉 Var : Sum2(0), Counter2(0), CSum2(0),Wma2(0),SumSqrt2(0),Std2(0),wma3(0),std3(0); Array : HH[70](0),CC[70](0),LL[70](0); if DayOfWeek(sdate) <= DayOfWeek(sdate[1]) and sdate > sdate[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 61{ HH[cnt] = HH[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; TCHAN1 = HH[1]; ## 주봉 pc[1] for cnt = 1 to LENGTH1 { if HH[cnt] > TCHAN1 Then TCHAN1 = HH[cnt]; } TCHAN2 = HH[1]; ## 주봉 pc[1] for cnt = 1 to LENGTH2 { if HH[cnt] > TCHAN2 Then TCHAN2 = HH[cnt]; } Sum1 = 0; CSum1 = 0; For counter1 = 0 To Period1-1{ Sum1= Sum1 + ((HH[counter1]+LL[counter1]+CC[counter1])/3) * (Period1 - counter1); CSum1 = CSum1 + (Period1 - counter1); } WMA1 = Sum1/ CSum1; SumSqrt1 = 0; For Counter1 = 0 To Period1-1 { SumSqrt1 = SumSqrt1 + (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1) * (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1); } Std1 = SquareRoot(SumSqrt1 / Period1); Sum2 = 0; CSum2 = 0; For counter2 = 0 To Period2-1{ Sum2 = Sum2 + ((HH[counter2]+LL[counter2]+CC[counter2])/3) * (Period2 - counter2); CSum2 = CSum2 + (Period2 - counter2); } WMA2 = Sum2/CSum2; SumSqrt2 = 0; For Counter2 = 0 To Period2-1 { SumSqrt2 = SumSqrt2 + (((HH[counter2]+LL[counter2]+CC[counter2])/3) - WMA2) * (((HH[counter2]+LL[counter2]+CC[counter2])/3) - WMA2); } Std2 = SquareRoot(SumSqrt2 / Period2); var1 = wma1+(p1*STD1); ## 주봉 b.b var2 = wma2+(p1*STD2); ## 주봉 b.b var3 = (HH[0]+LL[0])/2; ## 주봉 중간값 ## 일봉 Var : Sum11(0), Counter11(0), CSum11(0),Wma11(0),SumSqrt11(0),Std11(0); Var : Sum12(0), Counter12(0), CSum12(0),Wma12(0),SumSqrt12(0),Std12(0); Var : Sum13(0), Counter13(0), CSum13(0),Wma13(0),SumSqrt13(0),Std13(0); TCHAN11 = dayhigh(1); for cnt = 1 to LENGTH11 { if dayhigh(cnt) > TCHAN11 Then TCHAN11 = dayhigh(cnt); } TCHAN12 = dayhigh(1); for cnt = 1 to LENGTH12 { if dayhigh(cnt) > TCHAN12 Then TCHAN12 = dayhigh(cnt); } TCHAN13 = dayhigh(1); for cnt = 1 to LENGTH13 { if dayhigh(cnt) > TCHAN13 Then TCHAN13 = dayhigh(cnt); } Sum11 = 0; CSum11 = 0; For counter11 = 0 To Period11-1{ Sum11= Sum11 + ((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) * (Period11 - counter11); CSum11 = CSum11 + (Period11 - counter11); } WMA11 = Sum11/ CSum11; SumSqrt1 = 0; For Counter11 = 0 To Period11-1 { SumSqrt11 = SumSqrt11 + (((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) - WMA11) * (((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) - WMA11); } Std11 = SquareRoot(SumSqrt11 / Period11); Sum12 = 0; CSum12 = 0; For counter12 = 0 To Period12-1{ Sum12 = Sum12 + ((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) * (Period12 - counter12); CSum12 = CSum12 + (Period12 - counter12); } WMA12 = Sum12/CSum12; SumSqrt12 = 0; For Counter12 = 0 To Period12-1 { SumSqrt12 = SumSqrt12 + (((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) - WMA12) * (((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) - WMA12); } Std12 = SquareRoot(SumSqrt12 / Period12); Sum13 = 0; CSum13 = 0; For counter13 = 0 To Period13-1 { Sum13 = Sum13 + ((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) * (Period13 - counter13); CSum13 = CSum13 + (Period13 - counter13); } WMA13 = Sum13/ CSum13; SumSqrt13 = 0; For Counter13 = 0 To Period13-1 { SumSqrt13 = SumSqrt13 + (((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) - WMA13) * (((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) - WMA13); } Std13 = SquareRoot(SumSqrt13 / Period13); var11 = Wma1+(P1*Std1); ## 일봉 b,b 20 var12 = Wma2+(P1*Std2); ## 일봉 b,b 60 var13 = Wma3+(P1*Std3); ## 일봉 b,b 120 var14 = (DayHigh+DayLow)/2; ## 일봉중간값 즐거운 하루되세요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-11-02 10:18:27

안녕하세요 예스스탁입니다. Nth는 단지 1~10순위까지 최고이평값을 저장하기 위한 NTHVALUE의 공간을 지정하는 것 뿐입니다. For Nth = 1 to 10 #1번 for문 { tempmax = -99999999; #2번 For mavp = 50 to 200 #3번 for문 { if ( mav[mavp] > tempmax ) then #4번 { tempmax = mav[mavp];#5번 tempIndex = mavp;#6번 } } NTHVALUE[Nth] = tempmax;#7번 mav[tempIndex] = -99999999;#8번 } 1. 우선 1번 for문에 의해 Nth에 1이 저장되면 2. tempmax에 -99999999 값이 저장되고 3. 3번 for문에 의해 mav[50]~mav[200]까지의 이평을 하나하나 불러오고 4 이평을 불러올때마다 tempmax의 값과 비교해 이평값이 크면 5. 해당이평값을 tempmax에 저장하여 갱신합니다. 6. 이때 값이 갱신되면 tempIndex에 현재불러온 mav의 공간번호(해당이평의 기간값으로 공간번호가 지정되어 있으므로)를 저장함 7. 위 3번 for문이 다 끝나면 NTHVALUE[1]에 현재저장된 tempmax값(최고 이평값)을 저장하고 8. 최고 이평값으로 지정된 이평값(mav[tempIndex])은 다음 순위계산에서는 빼야 하므로 -99999999와 같이 늦은 값을 할당 위 8번에 의해 nth에 2가 할당될때는 직전 nth에 1이 할당될때 찾은 최고 이평값(mav[tempIndex])은 아주 낮은 값을 가지므로 다음 2순위 최고값을 계산될때는 tempmax 로 지정받을 수 없게 됩니다. 예를 들면 nth에 1이 할당될때 mav[70]이 3번 for을 수행한 결과 최고값이었다면 8번에서 mav[70]값은 -99999999로 값을 변경해 주어 nth에 2가 할당될때는 mav[70]값은 tempmax 로 지정받을수 없게 만드는 것입니다. 즐거운 하루되세요 > 아틀라스 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 빠른 답변 감사합니다. 보내주신 수식에서 아래부문에 대해서 조금 더 문의 드리고자 합니다. 첫 Nth==1에서는 최대값이 산출되었습니다. 두번째 Nth==2에서는 어떻게 2번째 순위의 이평선이 산출되는지 세부 설명부탁드립니다. 두번째 if문에서 Nth의 역할이 없는데도 산출이 가능한지 궁금합니다. (이평선과 기간값의 차이는 무엇인가요?) 감사합니다. 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]); 즐거운 하루되세요