안녕하세요 항상 노고에 너무 감사드립니다.
시간봉에서 일봉의 이평선 값을 표현하고 싶습니다.
주식이 아니라 해외선물 또는 코인에서 사용할 예정입니다.
비슷한 자료를 찾아 봤는데,
-------
Input : Period(5);
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,"지수이동평균"); //지수이동평균을 출력한다.
--------
이렇게 있더라구요, 문제는 해외선물 같은 경우, 세션이 끝나고 그 다음 세션을 기준으로 새로운 봉이 만들어지는데(같은 날일지라도), 저 식대로하면 12시가 지났을때 새로 표현이 되는 것 같아서 제대로 표현이 안될까봐 고민입니다.
결론은, 시간 봉(60분봉이나 240분봉)사용 시, 당일 일봉상의 12일 가중이평선을 표시하는 사용자 함수를 부탁드립니다.
ex)DailyEMA(12);
전일 일봉상의 12일 가중이평선을 표시하길 원할 경우
DailyEMA(12)[1] 이렇게 사용할 수 있도록 부탁드립니다. (__)
항상 감사드립니다.
답변 3
예스스탁
예스스탁 답변
2024-02-27 14:23:07
안녕하세요
예스스탁입니다.
date != date[1]
위 표현은 밤 0시가 기준입니다.
위 표현을 bdate != bdate[1]로 변경하시면
거래소 영업일 변경시간이 기준이 됩니다.
사용자함수명 : DailyEMA
반환값형 : 숫자형
Input : Period(Numeric);
Var : Ep(0), JISU(0), DINDEX(0), PreJISU(0);
Ep = 2/(Period+1);
if bdate != bdate[1] then
{
DINDEX = DINDEX + 1;
PreJISU = JISU[1];
}
if DINDEX <= 1 then
JISU = C;
else
JISU = C * EP + PreJISU * (1-EP);
DailyEMA = JISU;
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 시간 봉에서 일봉의 이평선 값 표현 2개
> 안녕하세요 항상 노고에 너무 감사드립니다.
시간봉에서 일봉의 이평선 값을 표현하고 싶습니다.
주식이 아니라 해외선물 또는 코인에서 사용할 예정입니다.
비슷한 자료를 찾아 봤는데,
-------
Input : Period(5);
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,"지수이동평균"); //지수이동평균을 출력한다.
--------
이렇게 있더라구요, 문제는 해외선물 같은 경우, 세션이 끝나고 그 다음 세션을 기준으로 새로운 봉이 만들어지는데(같은 날일지라도), 저 식대로하면 12시가 지났을때 새로 표현이 되는 것 같아서 제대로 표현이 안될까봐 고민입니다.
결론은, 시간 봉(60분봉이나 240분봉)사용 시, 당일 일봉상의 12일 가중이평선을 표시하는 사용자 함수를 부탁드립니다.
ex)DailyEMA(12);
전일 일봉상의 12일 가중이평선을 표시하길 원할 경우
DailyEMA(12)[1] 이렇게 사용할 수 있도록 부탁드립니다. (__)
항상 감사드립니다.
빠른 답변 감사드립니다. (__)
제가 설명을 똑바로 못한 것 같아 다시 재차 문의드립니다.
첨부파일 참고 부탁드립니다.
저런 식으로 값이 떠야 합니다
해당 값은 전일의 12EMA로 부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시간 봉에서 일봉의 이평선 값 표현 2개
>
안녕하세요
예스스탁입니다.
date != date[1]
위 표현은 밤 0시가 기준입니다.
위 표현을 bdate != bdate[1]로 변경하시면
거래소 영업일 변경시간이 기준이 됩니다.
사용자함수명 : DailyEMA
반환값형 : 숫자형
Input : Period(Numeric);
Var : Ep(0), JISU(0), DINDEX(0), PreJISU(0);
Ep = 2/(Period+1);
if bdate != bdate[1] then
{
DINDEX = DINDEX + 1;
PreJISU = JISU[1];
}
if DINDEX <= 1 then
JISU = C;
else
JISU = C * EP + PreJISU * (1-EP);
DailyEMA = JISU;
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 시간 봉에서 일봉의 이평선 값 표현 2개
> 안녕하세요 항상 노고에 너무 감사드립니다.
시간봉에서 일봉의 이평선 값을 표현하고 싶습니다.
주식이 아니라 해외선물 또는 코인에서 사용할 예정입니다.
비슷한 자료를 찾아 봤는데,
-------
Input : Period(5);
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,"지수이동평균"); //지수이동평균을 출력한다.
--------
이렇게 있더라구요, 문제는 해외선물 같은 경우, 세션이 끝나고 그 다음 세션을 기준으로 새로운 봉이 만들어지는데(같은 날일지라도), 저 식대로하면 12시가 지났을때 새로 표현이 되는 것 같아서 제대로 표현이 안될까봐 고민입니다.
결론은, 시간 봉(60분봉이나 240분봉)사용 시, 당일 일봉상의 12일 가중이평선을 표시하는 사용자 함수를 부탁드립니다.
ex)DailyEMA(12);
전일 일봉상의 12일 가중이평선을 표시하길 원할 경우
DailyEMA(12)[1] 이렇게 사용할 수 있도록 부탁드립니다. (__)
항상 감사드립니다.
예스스탁
예스스탁 답변
2024-02-27 15:28:43
안녕하세요
예스스탁입니다.
1
수식은 과거에서 현재로 오면서 계산하므로
현재봉기준으로는 계산을 해야 전일값도 리턴이 됩니다.
함수에 매개변수를 하나 더 추가해서 N일전 값을 가져올수 있게 수정해 드립니다.
dailyEMA(기간,이전일)과 같이 함수식 이용하시면 됩니다.
dailyEMA(20,0) --> 일봉 20지수이평 당일값
dailyEMA(20,1) --> 일봉 20지수이평 전일값
dailyEMA(20,2) --> 일봉 20지수이평 전전일값
2
사용자함수명 : DailyEMA
반환값형 : 숫자형
Input : Period(Numeric),prev(Numeric);
Var : Ep(0), DINDEX(0),cnt(0);
Array : Jisu[100](0);
Ep = 2/(Period+1);
if bdate != bdate[1] then
{
DINDEX = DINDEX + 1;
For cnt = 99 DownTo 1
{
Jisu[cnt] = Jisu[cnt-1];
}
}
if DINDEX <= 1 then
JISU[0] = C;
else
JISU[0] = C * EP + JISU[1] * (1-EP);
DailyEMA = JISU[prev];
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : Re : Re : 시간 봉에서 일봉의 이평선 값 표현 2개
> 빠른 답변 감사드립니다. (__)
제가 설명을 똑바로 못한 것 같아 다시 재차 문의드립니다.
첨부파일 참고 부탁드립니다.
저런 식으로 값이 떠야 합니다
해당 값은 전일의 12EMA로 부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시간 봉에서 일봉의 이평선 값 표현 2개
>
안녕하세요
예스스탁입니다.
date != date[1]
위 표현은 밤 0시가 기준입니다.
위 표현을 bdate != bdate[1]로 변경하시면
거래소 영업일 변경시간이 기준이 됩니다.
사용자함수명 : DailyEMA
반환값형 : 숫자형
Input : Period(Numeric);
Var : Ep(0), JISU(0), DINDEX(0), PreJISU(0);
Ep = 2/(Period+1);
if bdate != bdate[1] then
{
DINDEX = DINDEX + 1;
PreJISU = JISU[1];
}
if DINDEX <= 1 then
JISU = C;
else
JISU = C * EP + PreJISU * (1-EP);
DailyEMA = JISU;
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 시간 봉에서 일봉의 이평선 값 표현 2개
> 안녕하세요 항상 노고에 너무 감사드립니다.
시간봉에서 일봉의 이평선 값을 표현하고 싶습니다.
주식이 아니라 해외선물 또는 코인에서 사용할 예정입니다.
비슷한 자료를 찾아 봤는데,
-------
Input : Period(5);
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,"지수이동평균"); //지수이동평균을 출력한다.
--------
이렇게 있더라구요, 문제는 해외선물 같은 경우, 세션이 끝나고 그 다음 세션을 기준으로 새로운 봉이 만들어지는데(같은 날일지라도), 저 식대로하면 12시가 지났을때 새로 표현이 되는 것 같아서 제대로 표현이 안될까봐 고민입니다.
결론은, 시간 봉(60분봉이나 240분봉)사용 시, 당일 일봉상의 12일 가중이평선을 표시하는 사용자 함수를 부탁드립니다.
ex)DailyEMA(12);
전일 일봉상의 12일 가중이평선을 표시하길 원할 경우
DailyEMA(12)[1] 이렇게 사용할 수 있도록 부탁드립니다. (__)
항상 감사드립니다.