[수식관리자] 일봉 차트에 주봉5선 지표겹치기

주봉 5선을 기준으로 추세를 타고 가거나 혹은 추세를 이탈하는 모습을 일봉에서 확인하기 위해 주봉5선을 표시하는 방법을 알고 싶었습니다.

 

파이썬으로 주봉 차트 데이터 가져와서 계산하면 쉽게 알 수 있지만 HTS나 MTS에서는 딱 이거다라면서 제공해주는 기능이 없습니다.
그래서 직접 함수를 구현해서 수식관리자에서 구현을 해주어야만 합니다.

아래는 주봉5선을 일봉 차트에 표기하는 수식을 구현해놓은 부분입니다.
예스스탁 사용자분들이 남겨놓은 수많은 레퍼런스를 통해 저도 구현해보게 되었습니다.

사용자함수로 필요한게 DayOfWeek, 그리고 nPreWC 입니다.

DayOfWeek은 요일을 구하는 함수입니다. 함수 구현은 사카모토 방정식을 이용한 수식입니다. 
앞서 금요일을 구해서 차트에 표기하는 수식과 옵션만기일을 표시하는 방법을 포스팅해두었으니 참고하시기 바랍니다.

 

DayOfWeek(D) 함수

요일을 구하는 함수입니다. 

M=FLOOR((D%10000)/100);
DAY=D%100;
Y=Floor(D/10000);
A=Y-1;
YSFT=Floor(A/4)-Floor(A/100)+Floor(A/400)+A;
YG=(Y%4==0 && Y%100!=0)||(Y%100==0 && Y%400==0);
MSFT=IF(YG==1,
IF(M==1||M==4||M==7,0,
IF(M==10,1,
IF(M==5,2,
IF(M==2||M==8,3,
IF(M==3||M==11,4,
IF(M==6,5,6)))))),
IF(M==1 || M==10,0,
IF(M==5,1,
IF(M==8,2,
IF(M==2 || M==3 || M==11,3,
IF(M==6,4,
IF(M==9||M==12,5,6))))))
);
(YSFT+MSFT+DAY)%7

 

 

위 수식관리자의 내용을 ChatGPT에게 물어보면 아래와 같은 답변을 해줍니다.

주어진 영웅문 수식 관리자 코드는 주어진 날짜(D)로부터 요일을 계산하는 수식입니다. 이 수식은 다양한 수치 연산과 조건문을 사용하여 연도(Y), 월(M), 일(DAY) 등을 기반으로 요일을 계산합니다.

수식의 각 부분을 해석하면 다음과 같습니다:

M: 주어진 날짜로부터 월을 계산합니다.
DAY: 주어진 날짜로부터 일을 계산합니다.
Y: 주어진 날짜로부터 연도를 계산합니다.
A: 연도에서 1을 뺀 값을 계산합니다.
YSFT: 윤년에 대한 보정값을 계산합니다.
YG: 윤년 여부를 계산합니다.
MSFT: 월에 대한 보정값을 계산합니다.
최종 결과: YSFT, MSFT, DAY를 이용하여 요일을 계산하고, 결과를 7로 나눈 나머지를 구합니다.
해당 수식에서 사용된 함수 및 연산에 대한 설명은 다음과 같습니다:

FLOOR(x): x 값을 내림으로 처리합니다.
D%10000: D를 10000으로 나눈 나머지를 구합니다.
D/10000: D를 10000으로 나눈 몫을 구합니다.
IF(condition, true_value, false_value): 조건이 참이면 true_value를 반환하고, 거짓이면 false_value를 반환합니다.
이 수식은 주어진 날짜(D)에 대한 요일을 0(일요일)에서 6(토요일) 사이의 값으로 반환합니다. 예를 들어, 결과가 0이면 일요일, 1이면 월요일, ..., 6이면 토요일입니다.

 

정확합니다. 사카모토 방정식으로 풀어낸 요일 정보는 토요일이 가장 큰 숫자 6으로 리턴되며, 일요일이 가장 작은 숫자 0으로 리턴되게 되어 있습니다.

 

 

 

수식관리자 - 일반함수 에서 새로만들기를 통해 함수명 DayOfWeek(D)  그리고 수식 내용을 작성 한 뒤 수식검증 버튼을 누르고 작업저장을 하시면 됩니다.

 

 

 

 

 

nPreWC(n)  함수

주봉의 종가 데이터를 가져오는 함수입니다.

A=DayOfWeek(date);
Valuewhen(n, A(1)>A, C(1))

 

여기선는 Valuewhen 함수를 이용합니다

 

Valuewhen(nth, condition, value) 

오늘부터 과거로 가면서 nth번째로 condition 을 만족할때 value 값을 넘겨주는 함수입니다.

 

DayOfWeek으로 요일 숫자를 가져와 일요일에서 토요일에 해당될 때 금요일의 종가를 넘겨주게 됩니다

nPreWC(1)은 일주전, 2는 2주전 종가를 얻어오게 됩니다.

 

위 함수 역시 일반함수에서 생성하시면됩니다.

 

 

주봉5선 함수

 

위 두개의 함수를 이용해 이번주 주봉5선과 지난주 주봉5선을 수식으로 작성해봅니다.

수식은 아래와 같습니다. 

// 이번주 주봉 5선
(C+nPreWC(1)+nPreWC(2)+nPreWC(3)+nPreWC(4))/5

// 지난주 주봉 5선
(nPreWC(1)+nPreWC(2)+nPreWC(3)+nPreWC(4)+nPreWC(5))/5

 

 

이번 주봉의 경우 일봉의 종가 데이터를 참고하기 때문에 매일 종가가 변경되므로 5일선이 춤을 추는 모습을 나타내게 됩니다.

대신 지난주 주봉 5선의 경우 주봉의 종가만 참고하기 때문에 딱딱 잘 그어진 연결선으로 표시가 됩니다.

 

수식관리자 - 기술적지표에서 새로만들기를 통해 주봉5선, 지난주 주봉5선을 수식으로 작성하고 수식검증 및 작업저장을 해줍니다.

 

 

 

 

일봉차트에 주봉5선 표시

 

이렇게 작성된 주봉5선 수식을 일봉차트에 넣어봅니다.

차트에서 마우스 우클릭 메뉴 - 지표겹치기를 통해 작성된 주봉5선 수식을 찾아서 적용해줍니다.

지표 설정에서 스케일 탭에서 '가격' 으로 맞춰 줍니다.

 

그러면 아래와 같이 주봉 5선이 일봉차트에 표기된걸 보실수 있게 됩니다.

 

 

일봉의 금요일에 표기된 주봉5선의 값이 주봉차트에서 보는 값과 정확하게 일치하게 됩니다.

 

 

슈프리마에이치큐 일봉 차트입니다. 

주봉 5선 값이 7,514입니다.

 

 

아래는 주봉 차트입니다.

1월 26일이 포함되는 주의 5선 평균선이 7,514로 동일하게 됩니다.

 

 

 

이렇게 주봉5선을 일봉차트에 표기하는 수식에 대한 포스팅을 마칩니다.

조금 응용하면 월봉3선, 월봉5선 또한 주봉에 표기할 수도 있으니 참고하시기 바랍니다.