커뮤니티
지표식 부탁드립니다.
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]) ;
다음글
이전글