커뮤니티
5분에서 30분이평 나타내는 식에서...
2006-10-21 22:49:09
1445
글번호 11087
어떻게 해야 1분봉에서 5분이평이 나오게 할 수 있나요?
input:mm(30),p(12),p1(5),p2(10),p3(20);
var:j(0), k(0), 월(0), 일(0), 요일(0), endtime(0),
sum1(0), sum2(0), sum3(0), ma1(0), ma2(0), ma3(0);
array:oo[100](0), hh[100](0), ll[100](0), cc[100](0);
월 = int(date/100)-int(date/10000)*100; //최종거래일 여부를 판단하기 위한 변수들
일 = date - int(date/100)*100;
요일 = DayOfWeek(date);
var1 = mm/BarInterval(); //계산할 주기
if dayindex()==0 then var2 = 0;
if int(date[1]/10000) == int(date/10000) and //연초개장일에는 10시 장개시, 15시15분 장종료
dayindex()==0 and stime==100000 then var2 = 10000; //수능시험일등 10시 개장시 1시간 연장 반영
if ((월 % 3 == 0 and CodeCategory() == 4) //선물종목일 경우 3,6,9,12월
or CodeCategory() > 4) //옵션종목일 경우 매월
and 일 >= 8 and 일 <= 14 //두번째
and 요일 == 4 //목요일
then
endtime = 145000 - (var1 * 100) + 1; //최종거래일의 경우 정확하게 14:50에 끝나지 않음
else
endtime = 151500 + var2; //위에서 1시간 연장시 장종료시간
k = k + 1;
if (dayindex()+1)%var1 == 0 or time >= endtime then {
for j = 99 downto 1 {
oo[j] = oo[j-1];
hh[j] = hh[j-1];
ll[j] = ll[j-1];
cc[j] = cc[j-1];
}
oo[0] = o[k-1];
hh[0] = highest(h,k);
ll[0] = lowest(l,k);
cc[0] = c;
k = 0;
#------------#
# 이동평균 #
#------------#
sum1 = 0;
sum2 = 0;
sum3 = 0;
for j = 0 to max(p1,p2,p3)-1 {
if j <= p1-1 then
sum1 = sum1 + cc[j];
if j <= p2-1 then
sum2 = sum2 + cc[j];
if j <= p3-1 then
sum3 = sum3 + cc[j];
}
ma1 = sum1 / p1;
ma2 = sum2 / p2;
ma3 = sum3 / p3;
}
plot1(ma1);
plot2(ma2);
plot3(ma3);
답변 2
예스스탁 예스스탁 답변
2006-10-23 09:46:37
안녕하세요
예스스탁입니다.
5분봉에서 30분봉 이평을 정확히 나타낼 수 없습니다.
아래의 식이 가장 근접하게 나타낸다고 생각됩니다.
즐거운 하루되세요
> 요한 님이 쓴 글입니다.
> 제목 : 5분에서 30분이평 나타내는 식에서...
> 어떻게 해야 1분봉에서 5분이평이 나오게 할 수 있나요?
input:mm(30),p(12),p1(5),p2(10),p3(20);
var:j(0), k(0), 월(0), 일(0), 요일(0), endtime(0),
sum1(0), sum2(0), sum3(0), ma1(0), ma2(0), ma3(0);
array:oo[100](0), hh[100](0), ll[100](0), cc[100](0);
월 = int(date/100)-int(date/10000)*100; //최종거래일 여부를 판단하기 위한 변수들
일 = date - int(date/100)*100;
요일 = DayOfWeek(date);
var1 = mm/BarInterval(); //계산할 주기
if dayindex()==0 then var2 = 0;
if int(date[1]/10000) == int(date/10000) and //연초개장일에는 10시 장개시, 15시15분 장종료
dayindex()==0 and stime==100000 then var2 = 10000; //수능시험일등 10시 개장시 1시간 연장 반영
if ((월 % 3 == 0 and CodeCategory() == 4) //선물종목일 경우 3,6,9,12월
or CodeCategory() > 4) //옵션종목일 경우 매월
and 일 >= 8 and 일 <= 14 //두번째
and 요일 == 4 //목요일
then
endtime = 145000 - (var1 * 100) + 1; //최종거래일의 경우 정확하게 14:50에 끝나지 않음
else
endtime = 151500 + var2; //위에서 1시간 연장시 장종료시간
k = k + 1;
if (dayindex()+1)%var1 == 0 or time >= endtime then {
for j = 99 downto 1 {
oo[j] = oo[j-1];
hh[j] = hh[j-1];
ll[j] = ll[j-1];
cc[j] = cc[j-1];
}
oo[0] = o[k-1];
hh[0] = highest(h,k);
ll[0] = lowest(l,k);
cc[0] = c;
k = 0;
#------------#
# 이동평균 #
#------------#
sum1 = 0;
sum2 = 0;
sum3 = 0;
for j = 0 to max(p1,p2,p3)-1 {
if j <= p1-1 then
sum1 = sum1 + cc[j];
if j <= p2-1 then
sum2 = sum2 + cc[j];
if j <= p3-1 then
sum3 = sum3 + cc[j];
}
ma1 = sum1 / p1;
ma2 = sum2 / p2;
ma3 = sum3 / p3;
}
plot1(ma1);
plot2(ma2);
plot3(ma3);
요한
2006-10-23 10:43:54
제가물어본것은
"어떻게 해야 1분봉에서 5분이평이 나오게 할 수 있나요?"
인데요...
이 식을 어떻게 변형시켜야하죠?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 5분에서 30분이평 나타내는 식에서...
> 안녕하세요
예스스탁입니다.
5분봉에서 30분봉 이평을 정확히 나타낼 수 없습니다.
아래의 식이 가장 근접하게 나타낸다고 생각됩니다.
즐거운 하루되세요
> 요한 님이 쓴 글입니다.
> 제목 : 5분에서 30분이평 나타내는 식에서...
> 어떻게 해야 1분봉에서 5분이평이 나오게 할 수 있나요?
input:mm(30),p(12),p1(5),p2(10),p3(20);
var:j(0), k(0), 월(0), 일(0), 요일(0), endtime(0),
sum1(0), sum2(0), sum3(0), ma1(0), ma2(0), ma3(0);
array:oo[100](0), hh[100](0), ll[100](0), cc[100](0);
월 = int(date/100)-int(date/10000)*100; //최종거래일 여부를 판단하기 위한 변수들
일 = date - int(date/100)*100;
요일 = DayOfWeek(date);
var1 = mm/BarInterval(); //계산할 주기
if dayindex()==0 then var2 = 0;
if int(date[1]/10000) == int(date/10000) and //연초개장일에는 10시 장개시, 15시15분 장종료
dayindex()==0 and stime==100000 then var2 = 10000; //수능시험일등 10시 개장시 1시간 연장 반영
if ((월 % 3 == 0 and CodeCategory() == 4) //선물종목일 경우 3,6,9,12월
or CodeCategory() > 4) //옵션종목일 경우 매월
and 일 >= 8 and 일 <= 14 //두번째
and 요일 == 4 //목요일
then
endtime = 145000 - (var1 * 100) + 1; //최종거래일의 경우 정확하게 14:50에 끝나지 않음
else
endtime = 151500 + var2; //위에서 1시간 연장시 장종료시간
k = k + 1;
if (dayindex()+1)%var1 == 0 or time >= endtime then {
for j = 99 downto 1 {
oo[j] = oo[j-1];
hh[j] = hh[j-1];
ll[j] = ll[j-1];
cc[j] = cc[j-1];
}
oo[0] = o[k-1];
hh[0] = highest(h,k);
ll[0] = lowest(l,k);
cc[0] = c;
k = 0;
#------------#
# 이동평균 #
#------------#
sum1 = 0;
sum2 = 0;
sum3 = 0;
for j = 0 to max(p1,p2,p3)-1 {
if j <= p1-1 then
sum1 = sum1 + cc[j];
if j <= p2-1 then
sum2 = sum2 + cc[j];
if j <= p3-1 then
sum3 = sum3 + cc[j];
}
ma1 = sum1 / p1;
ma2 = sum2 / p2;
ma3 = sum3 / p3;
}
plot1(ma1);
plot2(ma2);
plot3(ma3);
다음글