커뮤니티

시간 봉에서 일봉의 이평선 값 표현 2개

프로필 이미지
이만스닥
2024-02-27 14:08:21
786
글번호 177011
답변완료
안녕하세요 항상 노고에 너무 감사드립니다. 시간봉에서 일봉의 이평선 값을 표현하고 싶습니다. 주식이 아니라 해외선물 또는 코인에서 사용할 예정입니다. 비슷한 자료를 찾아 봤는데, ------- 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] 이렇게 사용할 수 있도록 부탁드립니다. (__) 항상 감사드립니다.
프로필 이미지

이만스닥

2024-02-27 14:43:53

빠른 답변 감사드립니다. (__) 제가 설명을 똑바로 못한 것 같아 다시 재차 문의드립니다. 첨부파일 참고 부탁드립니다. 저런 식으로 값이 떠야 합니다 해당 값은 전일의 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] 이렇게 사용할 수 있도록 부탁드립니다. (__) 항상 감사드립니다.