커뮤니티

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);