Input : Period1(12),Period2(24);
input : short(24),long(48);
var : Didx(0),dEP1(0),dEP2(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
var : macdv(0);
#일봉 MACD계산
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
if bdate != bdate[1] Then
{
Didx = Didx + 1;
PredJISU1 = dJISU1[1];
PredJISU2 = dJISU2[1];
PredMACDV = dMACDV[1];
}
if Didx <= 1 then
{
dJISU1 = C;
dJISU2 = C;
dMACDV = dJISU1-dJISU2;
}
else
{
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
dMACDV = dJISU1-dJISU2;
}
macdv = macd(short,long);
if MarketPosition == 0 and dMACDV > 0 and MACDv > 0 Then
Buy();
if MarketPosition == 1 and (dMACDV < 0 or MACDv < 0) Then
ExitLong();
위와 같이 알려수신 수식은 감사하며 잘 사용하고 있습니다.
사용하다 보니 일봉값이 분봉에 표시될때 조금씩 차이가나서 변화를 주려고하니 수식을 알아야 할듯 싶어서요...
위 수식 설명을 좀 달아주세요.
감사합니다~~^^
답변 1
예스스탁
예스스탁 답변
2022-02-25 10:34:25
안녕하세요
예스스탁입니다.
지수이동평균 계산공식
EP(평활계수) = 2/(기간 + 1)
EMA = 금일 종가 * EP + 전일의 지수 이동평균 * (1-EP)
MACD 계산공식
단기지수이평-장기지수이평
위 계산공식과 함꼐 아래 주석 참고하시기 바랍니다.
Input : Period1(12),Period2(24);
input : short(24),long(48);
var : Didx(0),dEP1(0),dEP2(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
var : macdv(0);
#일봉 MACD계산
#단기지수이평 평활계수
#Period1이 12면 현재봉값은 약 15.4%, 전봉값은 84.6%비율로 합산
dEp1 = 2/(Period1+1);
#장기지수이평 평활계수
#Period1이 12면 현재봉값은 약 8%, 전봉값은 92%비율로 합산
dEp2 = 2/(Period2+1);
#날짜 변경시
if bdate != bdate[1] Then
{
#차트 날짜수
Didx = Didx + 1;
#PredJISU1에 전일 dJISU1(일봉단기지수이평)값 저장
PredJISU1 = dJISU1[1];
#PredJISU2에 전일 dJISU2(일봉장기지수이평)값 저장
PredJISU2 = dJISU2[1];
#PreMACDV에 전일 dMACDV(일봉MACD)값 저장
PredMACDV = dMACDV[1];
}
#차트상 첫날까지는
if Didx <= 1 then
{
#일간단기지수이평값은 종가
dJISU1 = C;
#일간장기지수이평값은 종가
dJISU2 = C;
#MACD는 장기지수이평-장기지수이평
dMACDV = dJISU1-dJISU2;
}
else #두번째날부터
{
#일간단기지수이평 = 오늘종가의 일정% + 전일단기지수피영의 일정%
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
#일간장기지수이평 = 오늘종가의 일정% + 전일단기지수피영의 일정%
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
#일간 MACD = 일간단기지수이평-일간장기지수이평
dMACDV = dJISU1-dJISU2;
}
#기본차트 MACD값
macdv = macd(short,long);
#무포지션일때 일간MACD가 0보다 크고 기본차트 macd가 0보다 크면 매수
if MarketPosition == 0 and dMACDV > 0 and MACDv > 0 Then
Buy();
#매수진입후 일간MACD가 0보다 작거나 기본차트 macd가 0보다 작으면 청산
if MarketPosition == 1 and (dMACDV < 0 or MACDv < 0) Then
ExitLong();
즐거운 하루되세요
> 탱탱볼 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다
>
Input : Period1(12),Period2(24);
input : short(24),long(48);
var : Didx(0),dEP1(0),dEP2(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
var : macdv(0);
#일봉 MACD계산
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
if bdate != bdate[1] Then
{
Didx = Didx + 1;
PredJISU1 = dJISU1[1];
PredJISU2 = dJISU2[1];
PredMACDV = dMACDV[1];
}
if Didx <= 1 then
{
dJISU1 = C;
dJISU2 = C;
dMACDV = dJISU1-dJISU2;
}
else
{
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
dMACDV = dJISU1-dJISU2;
}
macdv = macd(short,long);
if MarketPosition == 0 and dMACDV > 0 and MACDv > 0 Then
Buy();
if MarketPosition == 1 and (dMACDV < 0 or MACDv < 0) Then
ExitLong();
위와 같이 알려수신 수식은 감사하며 잘 사용하고 있습니다.
사용하다 보니 일봉값이 분봉에 표시될때 조금씩 차이가나서 변화를 주려고하니 수식을 알아야 할듯 싶어서요...
위 수식 설명을 좀 달아주세요.
감사합니다~~^^