커뮤니티
문의 드립니다.
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]);
즐거운 하루되세요
다음글
이전글