본문 바로가기
이동평균선

구글 시트로 주식(주가) 데이터 가져오기 (googlefinance)

by 인천고래 2023. 1. 21.
반응형

안녕하세요. 인천고래입니다.

 

오늘은 키움증권이 "한국 거래소 차세대 시스템 이행 관련 작업"을 이유로

매주 토요일마다 시스템 작업을 하고 있어서 HTS를 못 키는 관계로 주식에 대한 기초지식 중 하나인

이동평균선에 대해서 글을 써볼까 합니다.

 

그런데 한 가지 생각을 해 보니 이동평균선을 계산을 하는 것도 데이터가 있어야 하는데

HTS가 안되니 네이버나 다음 사이트에서 크롤링해서 데이터를 가져오는 것도 좀 귀찮고 해서

이번 글에서는 구글시트를 이용해서 주가 데이터를 가져와서 이동평균선 값을 만드는 것까지만 진행을 해 보도록 하겠습니다.

 

1. 주가 데이터 가져오기

우선 키움 증권 데이터를 가져올 수 없는 상태이므로 구글시트로 데이터를 만들어서 엑셀파일로 저장을 하는 방식으로 데이터를 가져오도록 하겠습니다.

혹시라도 PC에 엑셀 프로그램이 없으신 분들은 액셀에 작업하는 내용을 구글시트에 입력하는 방식으로 하셔도 됩니다.

 

우선 하기의 URL (구글에서 만든 구글시트 사이트입니다.)로 접속을 합니다.

https://docs.google.com/spreadsheets/d/1T4AVTDTHg9sBku_ufPtYNT4EMIEZeqPoD7GxNydHJMM/edit?usp=sharing

 

https://i-whale.com

시트1 Date,Open,High,Low,Close,Volume 2022. 9. 26 오후 3:30:00,7480,7640,7120,7150,542235 2022. 9. 27 오후 3:30:00,7150,7480,7150,7410,449546 2022. 9. 28 오후 3:30:00,7410,7460,6970,7010,441081 2022. 9. 29 오후 3:30:00,7100,7330,7000,7010,277152

docs.google.com

브라우저에 열린 페이지는 구글시트로 접속을 하면 아래와 같은 화면을 볼 수 있습니다.

구글시트 NPC 종목 데이터 가져오기

 

엑셀 프로그램과 거의 흡사하죠? 구글 시트는 구글에서 온라인용으로 만든 무료 엑셀이라고 보시면 됩니다.

다른 것은 거의 보실 필요는 없을 것 같고요

1행 1열(1행 A열)의 셀을 선택하면 GOOGLEFINANCE라고 쓰인 문장이 보일 것입니다. (겉으로 보기에는 Date라는 단어만 보입니다.)

그리고 그 이외의 셀을 확인해 보면 Open, High, Low, Close, Volume 등 헤더와 하단의 데이터까지 다 나와 있음을 확인할 수 있습니다. 

=GOOGLEFINANCE("004250", "all", today()-120, today() )

위의 내용한 줄로 원하는 종목의 모든 데이터를 가져오게 된 것입니다. 구글시트의 장점이라고 할 수 있죠.

흔히 우리는 데이터를 가져오기 위해서 크롤링을 사용하는데 HTML도 알아야 하고 프로그래밍 언어도 약간은 할 줄 알아야 하는데 구글 시트를 사용하면 난이도가 현저히 줄어드는 것을 경험하실 수 있습니다.

 

2. 구글 시트 복사하기

구글 시트를 가지고 테스트를 해 봐야 할 것 같죠?

우선 아래와 같이 사본 만들기로 해서 각자 작업을 해 보시면 될 것 같습니다.

"파일" > "사본만들기"를 선택하면 자신의 구글 드라이브에 구글시트 사본이 만들어집니다.

 

그 뒤에는 만들어진 사본으로 자신이 원하는 대로 작업, 변경을 해서 확인을 할 수 있습니다.

구글시트 사본만들기

 

3. 구글 쿼리 문장 해석 및 설명

그럼 데이터를 가져오는 문장(GOOGLEFINANCE)에 대해서 설명을 드리도록 하겠습니다.

GOOGLEFINANCE는 구글(https://www.google.com/finance/?tab=we)에서

주식 데이터를 가져올 때 사용하는 문장입니다. 형식은 이렇습니다.

GOOGLEFINANCE(종목 코드, 칼럼 종류, 데이터 시작날짜, 데이터 종료날짜 )
// 구글 사이트의 공식적인 Syntax
GOOGLEFINANCE(ticker, [attribute], [start_date], [end_date|num_days], [interval])

종목코드 자리에는 삼성전자 코드를 넣어도 되고 LG전자 코드를 넣어도 됩니다.

다만 코드 6자리의 첫 번째 자리가 0으로 시작하면 0은 사라지고 1 이상이 되는 숫자만 남아있게 되니

코드 6자리를 따옴표"로 묶어주면 됩니다. 이렇게요.  005930 => "005930"

GOOGLEFINANCE("005930", 칼럼 종류, 데이터 시작날짜, 데이터 종료날짜 )

그리고 "칼럼의 종류"에 해당하는 글자가 "all"로 표기되어 있죠? 이것은 캔들의 가격이라고 보시면 됩니다.

예를 들어 캔들 하나에는 시가(Open)가 있고, 고가(High), 저가(Low), 종가(Close)가 있죠?

종가만 표시를 하려면 종가라고 쓰면 되는데(영어로) 지금은 "all"이라고 되어 있습니다.

그 이야기는 시가, 고가, 저가, 종가를 모두 가져오라는 얘기가 됩니다. (거래량 포함해서 가져옵니다.)

GOOGLEFINANCE("005930", "all", 데이터 시작날짜, 데이터 종료날짜 )

혹시라도 종가만 가지고 오고 싶을 경우에는 아래와 같이 변경하시면 됩니다.

GOOGLEFINANCE("005930", "close", 데이터 시작날짜, 데이터 종료날짜 )

구글시트 주식정보 종가만 가져오기

이렇게 칼럼의 종류를 바꾸는 것 만으로 원하는 데이터를 가져올 수가 있습니다.

종가만 나오는 것을 확인했다면 "close"를 "all"로 바꿔둡니다.

 

그리고 today()-120과 today()가 있는데

today()는 구글시트에서 오늘의 날짜를 표시하게 해 줍니다.

그럼 today()-120을 하게 되면 오늘 날짜에서 -120일을 빼준 날짜를 의미합니다.

즉, 오늘-120일 전의 데이터부터 오늘의 날짜까지 데이터를 가져와라라는 의미가 됩니다.

=GOOGLEFINANCE("004250", "all", today()-120, today() )

그런데 문제가 있습니다.

우리는 주식시장에서 -120일이라고 하면 영업일 기준으로 생각을 해서 120일 전까지의 데이터를 가져오는 것을 의미하지만 구글파이낸스는 휴일을 포함한 데이터를 가져오기 때문에 실제적으로 데이터를 가져오면 80개 내외의 데이터만 가져오게 됩니다.

예를 들어 주식시장은 1년에 240일 정도의 영업일을 가지게 되는데 1년의 데이터를 가져오기 위해서는 365를 입력해야 1년 치 데이터를 가져올 수 있습니다.

=GOOGLEFINANCE("004250", "all", today()-365, today() )

googlefinance 날짜 기간 설명

 

4. 구글 시트를 엑셀 파일로 저장하기

자 그럼 데이터를 가져올 준비가 완료되었습니다.

엑셀 파일로 아래와 같이 저장을 합니다.

파일 > 다운로드 > Microsoft Excel(.xlsx)

구글시트 엑셀파일로 만들기

이렇게 해서 주식 데이터를 가져오는 작업을 완료했습니다.

다음 시간에는 만들어진 주식 데이터를 가지고 이동평균선을 만들고 이동평균선의 종류에 대해서 알아보는 시간을 갖도록 하겠습니다.

 

군데군데 이미지를 넣느라 시간이 좀 걸렸네요. ^^

오늘도 제 글을 읽어주신 모든 분들께 감사의 말씀을 드립니다.

감사합니다.

 

다음 글

2023.01.22 - [분류 전체보기] - 이동평균선의 종류(SMA, EMA, WMA)와 단순이동평균 계산 방법

 

이동평균선의 종류(SMA, EMA, WMA)와 단순이동평균 계산 방법

안녕하세요 인천고래입니다. 주식 투자를 하고 계시는 분이라면 다들 알고 계실 내용이긴 하지만 주식을 처음 하시는 분들도 계시는 관계로 오늘은 이동평균선의 종류와 계산방법에 대해 알아

i-whale.com

 

반응형
-

댓글