커뮤니티
30분봉을 5분봉에서 구현...
2006-07-22 19:57:33
1506
글번호 10465
커뮤니티-트레이딩 방에 있는 식을 실제로 해봤는데
이평값이 약간 우측으로 치우쳐서(즉, 실제 30분봉에서 일어나는 것보다 느리게) 나타나네요
어떻게 해야 30분봉에서 이평crossup할때 5분봉에서 구현한 30분봉도 crossup되도록 보이게 할까요? 아니면 실제 30분이평값에 더 가까운 값이 나올까요?
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);
답변 1
예스스탁 예스스탁 답변
2006-07-24 11:20:31
안녕하세요
예스스탁입니다.
먼저 올리신 식에서 보시다 시피
타분봉간의 이평은 여러 조건을 고려해야 하며
트레이딩방의 식이 가장 근접하다고 할 수 있습니다.
여러 변동조건을 무시하고 작성하면 아래와 같습니다.
input : P(20);
var : cnt(0),count(0),sum(0);
array : CC[30](0);
var1 = Fracportion(stime/10000)*100;
if var1 == 25 or var1 == 55 or Stime == 151500 then{
for cnt = 1 to p-1{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
sum = 0;
for count = 0 to P-1 {
sum = sum + CC[count];
}
var2 = sum/p;
plot1(var2);
참고하시기 바랍니다.
즐거운 하루되세요
> 요한 님이 쓴 글입니다.
> 제목 : 30분봉을 5분봉에서 구현...
> 커뮤니티-트레이딩 방에 있는 식을 실제로 해봤는데
이평값이 약간 우측으로 치우쳐서(즉, 실제 30분봉에서 일어나는 것보다 느리게) 나타나네요
어떻게 해야 30분봉에서 이평crossup할때 5분봉에서 구현한 30분봉도 crossup되도록 보이게 할까요? 아니면 실제 30분이평값에 더 가까운 값이 나올까요?
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);