52주 최저고가 구하기
현재부터 n기간 동안의 종,시저,고가격 기준으로 최저, 최고가 찾기
설명
그래프상 점1 과 점2 는 p1, p2로 두고
p1는 n기간에 따라 변화화는 점이고 p2는 현재일자의 가격임
점 p1을 x 값을 왼쪽으로 이동시키면서 p1과 p2사이의 p.y 의 값이 최고인 p3과 최저인 p3을 찾는다.
테이블로 저장후 보니깐
테이블 데이터중 -30일 데이터인지 -60일 데이터인지를 구분하는 값이
unit_type, 과 unit 값인데 변수로 설정하니 직관적이지 않은 테이블 내용을 갖게 되었음.
row_type 은 최고가,최저가를 구분한 값인데 이것도 true,false로 해서인지 직관적이지 않음.
데이터를 보면 볼수록 어려워짐..
직관적으로 수정 필요.
디비조회 결과 분류하기
디비테이블의 한 줄에 저가,고가,시가,종가가 구성되 있음으로
디비 조회결과를 한개의 배열에서 가격별 배열로 4개의 배열 분류하기
4개의 배열로 분류할때 구조체 수정하기.
++ 기간이 들어감.
4개의 가격별배열을 소팅하여 최저가, 최고가 얻기.
배열은 365일에 해당하는 일자의 가격이지만
내가 알고싶은건 1달간의 가격의 최고,최저과 1,2,3,4,5,6,~12 마다의 최저,고가격 인 일자인데?
배열을 반복문 돌릴떄 daycnt 값과 검색기간을 일수로 바꾼값과 비교하여 1~12 마다의 최저,최고가격을 저장해야됨.
기간별 최고가,최저가 찾기
구조체만들기
id: 숫자 ,x: 일자 ,y: 가격
구조체 배열 만들기
배열 순서 : 처음이 최신일자
구조체 배열에서 최고,최저가 찾기
구조체_최저가,최고가 만들기
배열의 0 번째의 구조체를 구조체_최저가,최고가 두기
반복문을 통해 배열의 원소구조체와 구조체_최저가,최고가 비교하여 원소구조체의 가격이 같거나 큰 경우 원소구조체를 구조체_최저가,최고가 두기
테이블
project.tb_52_weeks code_id, price_type, unit_type, unit, highprice, lowprice
예상 테이블 줄수
종목 * (52주, 1주, 2주, 3주, 1개월,2개월,3개월,4개월,5개월,6개월,7개월,8개월,9개월,10개월,11개월)찾는기간 수 * (저,고,종,시)기준가격
2000*(12+3)*(4) = 120,000
프로세스
- 테이블 초기화 하기.
- 전체 종목코드 조회
- 목록 조회 : 마지막날짜 보다 큰 해당종목의 가격+주단위 데이터 조회
- 종목의 가격은 한줄에 저고시종 가가 있음으로 이것을 4개로 분리 시켜 가격종류별 목록(종시저고가 목록 ) 만들기
- 종목의 각각의 가격 목록을 일자 기준으로 정렬 시킨다. 일단 보류: sql로 소트 처리하니깐
- 종목의 일자가 최신 장열림 날짜 기준으로 몇 주나 몇 개월에 해당하는지 계산후 모델에 저장한다. <== sql로 day_cnt로 처리함.
- 종목의 가격은 한줄에 저고시종 가가 있음으로 이것을 4개로 분리 시켜 가격종류별 목록(종시저고가 목록 ) 만들기
- 목록 탐색하기
- 기간에 따라 탐색 범위가 달라짐
-
한개의 종목의 가격목록이 4개의 가격종류별 가격목록이 되고
-
4개의 가격종류별 목록이 기간인 12개월과 123주 니깐 15개 4*15개의 최저최고가가 발생한다.
- 15개의 기간의 값의 차이는 크게 주단위와 월단위로 구분할수 있고
- 일수에 따라 구분할수 있다.
- 하지만 특정일 기준으로 365일 전 가격목록에서부터 정확히 365/7= 52.1428571429 인것처럼 나오진 않는다.
- 그러므로 7일을 일주일로 가정하고 30일을 한달로 가정한다는 기준이 필요하다.
- 그럼 365/30 = 12.1666666667
- 목록을 기간별로 끊으려면 끊으려는 기준을 정해야함.
- 7일은 1주일 14일은 2주 21일은 3주 30일은 한달 60일은 두달 이게 기준이
- 15개의 기간의 값의 차이는 크게 주단위와 월단위로 구분할수 있고
-
60개의 최고가 최저가의 정보를 디비에 저장한다.
-
- 목록에서 가격값이 최고인 값과 최저인 값 찾기
- 기간에 따라 탐색 범위가 달라짐
- 저창 채널은 받은 후 저장(upsert 하지말고 insert로만 하기)
- public.info 에 테이블 완료 됬다고 완료시간 업데이트 하기.
현재 가격이 52주와 얼마나 가까이에 있는 지를 파악한다. 그럼 테이블에는 얼마나 가까이에 있는지를 파악할수 있는 값이 존재 해야되지 않을까? 그리고 hiph_price와 low_price를 저장하지만 high_price_dt와 low_price_dt는 저장하지 않는다. 이것도 수정하자.
p1. sql로 실행
p1.1~4 golang
dao select
for
chan
chan
dao insert
config
meta.config에 추가할것
기간 112개월 텍스트값, 13주 텍스트값
config에서 기간 조회 dao 추가해야됨. .env로 하기