커뮤니티
간단한 질문.
2010-12-28 10:23:22
957
글번호 34608
분봉에서 일봉의 지수이평 계산식은 아래와 같습니다.
다만 유의하실 부분은 지수이평을 봉의 갯수에 영향을 받는
평균방법입니다. 실제 일봉과 분봉의 날짜수의 차이때문에
서로 다른 값을 리턴받을 수 있습니다.
공식과 함께 올려드립니다.
/*************지수이평 계산식************************
EMA = 현재봉의 종가 * Ep + 전봉의EMA * (1-EP)
Ep(평활계수)= 2/(Period+1)
*****************************************************/
Input : Period(20);
Var : Ep(0), JISU(0), DINDEX(0), PreJISU(0);
Ep = 2/(Period+1); //평활계수
if date != date[1] then { //날짜가 변경될 경우에(매일의 첫번째 봉)
DINDEX = DINDEX + 1; //일봉상의 index를 구한다
PreJISU = JISU[1]; //전봉(전일 마지막 봉)의 JISU값을 preJISU에 저장한다.
}
if DINDEX <= 1 then //일봉상의 인덱스가 1이하이면(차트 맨 앞 첫구간을 의미)
JISU = C; //종가를 지수이동평균값으로 저장한다.
else //이외의 경우에는 (두번째 구간 부터는)
JISU = C * EP + PreJISU * (1-EP); //위 지수이평 계산식에 의해 계산된 값을 지수이평값으로 저장한다.
plot1(JISU,"지수이동평균"); //지수이동평균을 출력한다.
1)
위식 유의사항중에 유의하실 부분은 지수이평을 봉의 갯수에 영향을 받는 평균방법입니다. 실제 일봉과 분봉의 날짜수의 차이때문에 서로 다른 값을 리턴받을 수 있습니다.
유의사항을 즉 다른값(틀린값을)을 피하려면 어떻게 해야하나요?
분봉챠트 조회건수가 작을수 값이 왜곡될수 있으니.
분봉 챠트 오픈시 설정 창에서 조회건수를 5000건(max)로 하면 된다고 이해 했는데 맞나요?
2.) 아래식을 지수이평식으로 변경하여주세요.
input : P1(5),P2(20);
var : sumV1(0), maV1(0), count(0),sumv2(0),mav2(0);
sumV1 = 0;
sumv2 = 0;
for count = 0 to P2{
If count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumv2 = sumv2+DayClose(count);
}
maV1 = sumV1/P1;
mav2 = sumv2/P2;
if CrossUp(C,maV2) Then
buy();
if CrossDown(c,mav1) Then
exitlong();
3) data2) 에 일봉챠트를 띄우고 거기에 지수이평을 띄우고 데이타2값으로 식을 작성할수도 있나요?
답변 1
예스스탁 예스스탁 답변
2010-12-28 14:26:13
안녕하세요
예스스탁입니다.
1.
5000봉까지 띄우고 사용하시는 방법외에는 없습니다.
5000봉까지 조회했지만 데이터의 일수가 모자라는 부분은
더이상 처리가 되지 않습니다.
2.
Input : Period1(5),Period2(20);
var : DINDEX(0);
Var : Ep1(0),JISU1(0),PreJISU1(0);
Var : Ep2(0),JISU2(0),PreJISU2(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
if date != date[1] then {
DINDEX = DINDEX + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
}
if DINDEX <= 1 then{
JISU1 = C;
JISU2= C;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
}
if CrossUp(C,JISU2) Then
buy();
if CrossDown(c,JISU1) Then
exitlong();
3.
예 있습니다. 다만 참조종목은 완성된 봉까지만 쓰이므로
오늘 만들어지고 있는 일봉의 값을 포함이 되지 않습니다.
수식으로 아래와 같이 표현하시면 됩니다.
data2(ema(C,5))
즐거운 하루되세요
> 휴식 님이 쓴 글입니다.
> 제목 : 간단한 질문.
> 분봉에서 일봉의 지수이평 계산식은 아래와 같습니다.
다만 유의하실 부분은 지수이평을 봉의 갯수에 영향을 받는
평균방법입니다. 실제 일봉과 분봉의 날짜수의 차이때문에
서로 다른 값을 리턴받을 수 있습니다.
공식과 함께 올려드립니다.
/*************지수이평 계산식************************
EMA = 현재봉의 종가 * Ep + 전봉의EMA * (1-EP)
Ep(평활계수)= 2/(Period+1)
*****************************************************/
Input : Period(20);
Var : Ep(0), JISU(0), DINDEX(0), PreJISU(0);
Ep = 2/(Period+1); //평활계수
if date != date[1] then { //날짜가 변경될 경우에(매일의 첫번째 봉)
DINDEX = DINDEX + 1; //일봉상의 index를 구한다
PreJISU = JISU[1]; //전봉(전일 마지막 봉)의 JISU값을 preJISU에 저장한다.
}
if DINDEX <= 1 then //일봉상의 인덱스가 1이하이면(차트 맨 앞 첫구간을 의미)
JISU = C; //종가를 지수이동평균값으로 저장한다.
else //이외의 경우에는 (두번째 구간 부터는)
JISU = C * EP + PreJISU * (1-EP); //위 지수이평 계산식에 의해 계산된 값을 지수이평값으로 저장한다.
plot1(JISU,"지수이동평균"); //지수이동평균을 출력한다.
1)
위식 유의사항중에 유의하실 부분은 지수이평을 봉의 갯수에 영향을 받는 평균방법입니다. 실제 일봉과 분봉의 날짜수의 차이때문에 서로 다른 값을 리턴받을 수 있습니다.
유의사항을 즉 다른값(틀린값을)을 피하려면 어떻게 해야하나요?
분봉챠트 조회건수가 작을수 값이 왜곡될수 있으니.
분봉 챠트 오픈시 설정 창에서 조회건수를 5000건(max)로 하면 된다고 이해 했는데 맞나요?
2.) 아래식을 지수이평식으로 변경하여주세요.
input : P1(5),P2(20);
var : sumV1(0), maV1(0), count(0),sumv2(0),mav2(0);
sumV1 = 0;
sumv2 = 0;
for count = 0 to P2{
If count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumv2 = sumv2+DayClose(count);
}
maV1 = sumV1/P1;
mav2 = sumv2/P2;
if CrossUp(C,maV2) Then
buy();
if CrossDown(c,mav1) Then
exitlong();
3) data2) 에 일봉챠트를 띄우고 거기에 지수이평을 띄우고 데이타2값으로 식을 작성할수도 있나요?