커뮤니티
macd오실레이터
2012-10-11 10:49:55
339
글번호 55523
아래 수식은 일봉값을 분봉에서 도 볼수 있게 한것인데요
분봉에서 보다 보니까 일봉값보다 조금 빠르게 나오거나 하는데
일봉 종가 값을 절대값으로 해서 분봉에서 장마감일봉종가와 장마감분봉종가가
같은 신호(선)가 나올수 있게 해주시면 고맙겠습니다
A1 = MACD(short,long)-eavg(MACD(short,long),signal);
if(A1>0, 100,-100)
==========================================================================
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
var1 = macdVal - macdSig;
var2 = iff(var1>0,100,-100);
plot1(var2);
plot2(0, "기준선", BLACK);
답변 1
예스스탁 예스스탁 답변
2012-10-11 15:32:47
안녕하세요
예스스탁입니다.
해당 식은 가격데이터로는 종가만 사용되고
해당봉의 종가가 그때 일봉의 종가입니다.
식상에서 해당 부분으로는 따로 수정할 부분이 없습니다.
다만 분봉에서 일봉의 MACD를 구현한 것이고
MACD는 지수이평이 기준이 되어 봉갯수에 따라 값이 차아가 날수 있어
먼저발생하는 것과 같이 보이실수도 있습니다.
좀더 가격을 근접시키기 위해 수식을 조금 수정했습니다.
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0),idx(0);
Var : macdVal(0), preMacdSig(0),PreMACDval(0),macdSig(0);
if date != date[1] then {
idx = idx+1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdSig = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
if idx < 1 Then{
JISU1 = c;
JISU2 = c;
}
Else{
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1);
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2);
macdVal = JISU1 - JISU2;
}
if idx < 2 Then
macdSig = MACDval;
Else
macdSig = macdVal * Ep3 + PreMacdsig * (1-Ep3);
var1 = macdVal - macdSig;
var2 = iff(var1>0,100,-100);
plot1(var2);
plot2(0, "기준선", BLACK);
즐거운 하루되세요
> 팔보채 님이 쓴 글입니다.
> 제목 : macd오실레이터
> 아래 수식은 일봉값을 분봉에서 도 볼수 있게 한것인데요
분봉에서 보다 보니까 일봉값보다 조금 빠르게 나오거나 하는데
일봉 종가 값을 절대값으로 해서 분봉에서 장마감일봉종가와 장마감분봉종가가
같은 신호(선)가 나올수 있게 해주시면 고맙겠습니다
A1 = MACD(short,long)-eavg(MACD(short,long),signal);
if(A1>0, 100,-100)
==========================================================================
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
var1 = macdVal - macdSig;
var2 = iff(var1>0,100,-100);
plot1(var2);
plot2(0, "기준선", BLACK);