구글파이낸스 코스피 - gugeulpainaenseu koseupi

이 글에서는 구글오피스 스프레드시트 활용법 – GOOGLEFINANCE 함수로 실시간 주가 정보를 활용하는 방법에 대해서 알아보도록 할게요.

구글 시트를 사용하면서 가장 편한 부분은 이 GOOGLEFINANCE 함수를 이용해서 실시간 주가 정보를 활용하는 것이었는데요. 이전에는 실시간 정보를 엑셀등으로 받아오려면 증권사의 HTS 프로그램을 같이 켜고 API를 통해 연결을 시켜주는 등의 설정의 어려움도 있었고, 업데이트를 위해서는 항상 프로그램을 실행시켜야만 된다는 불편한 점이 있습니다.

하지만, 구글 오피스의 스프레드시트의 경우 자신의 컴퓨터가 아닌 서버를 통해 연산을 할 수도 있고, 구글에서 제공하는 금융정보도 활용할 수 있는 장점이 있습니다.

함수사용법

=GOOGLEFINANCE(“기업코드”,”속성”,시작날짜,종료날짜 또는 일 수, 데이터간격)

사용은 위와 같은 형식으로 할 수 있습니다.

  • 기업코드 : 먼저 기업코드는 코스피 종목의 경우 KRX:000000 형태로 코스닥 종목은 KOSDAQ:0000000 형태로 입력하면 됩니다. 뒤의 000000에는 숫자코드로 각 종목의 코드는 사용하는 HTS나 네이버등의 검색을 통해 숫자 코드를 확인 할 수 있습니다.
  • 속성 : 속성 항목은 price, high, low 등 여러가지 속성이 있으며 각 속성의 용도와 사용예는 아래에서 다시 확인할 수 있습니다.
  • 시작날짜 : 시작날짜는 “2014. 1. 1″와 같이 사용할 수 있으며 DATE 함수를 이용하여 DATE(2014,1,1)과 같은 형태로 사용하거나 TODAY()와 같은 함수를 사용할 수도 있습니다.
  • 종료날짜 : 종료날짜는 날짜 형태로 입력이 가능하며 또는 5 또는 30 과 같이 숫자를 입력하여 시작날짜로부터 해당 날짜까지의 데이터를 얻을 수 있습니다.
  • 데이터간격 : 데이터 간격은 매일 (“DAILY”), 주별 (“WEELKY”) 를 선택할 수 있으며, 숫자로 1또는 7을 입력할 수 있습니다. 다른 숫자는 입력이 불가능합니다.
구글파이낸스 코스피 - gugeulpainaenseu koseupi

셀에 코스피 종목인 네이버의 종목코드 KRX:035420 를 C2에 저장한 후 각 속성별 값을 확인 할 수 있도록 만들어 봤는데요.

일반적으로 GOOGLEFINANACE(C2) 또는 GOOGLEFINANCE(“KRX:035420”)을 입력하면 20분 지연된 실시간 현재가격을 확인할 수 있습니다.

  • PRICEOPEN : 시초가
  • HIGH : 최고가
  • LOW : 최저가
  • VOLUME : 거래량
  • MARKETCAP : 시가총액
  • DATADELAY : 지연시간
  • VOLUMEAVG : 일일거래량
  • PE : PER
  • EPS : EPS
  • HIGH52 : 52주 최고가
  • LOW52 : 52주 최저가
  • CHANGE : 전일대비변동액
  • CHANGEPCT : 전일대비변동률
  • CLOSEYEST : 전일종가
  • SHARES : 발행주식수
  • CURRENCY : 통화
구글파이낸스 코스피 - gugeulpainaenseu koseupi

이번엔 데이터 추출 기간이 있을 경우를 한번 살펴 보겠습니다.

아래와 같이 데이터를 추출할 시작일과 종료일을 입력한 후 데일리 또는 위클리로 입력하면 자동으로 날짜와 가격이 테이블로 만들어집니다. 데이터는 함수를 입력한 바로 아래에 테이블로 나오게 되는데요. 만약 함수 입력한 셀의 아래 셋이 비어있지 않다면 에러 표시가 나오면서 아무 데이터도 나오지 않으니 확인해 보시기 바랍니다.

속성과 기간을 설정하면 해당 기간별 속성이 한꺼번에 추출됩니다.

구글파이낸스 코스피 - gugeulpainaenseu koseupi

오늘은 구글 오피스 스프레드시트에서 GOOGLEFINANCE 함수를 통해 실시간으로 주가를 업데이트 하고 이용하는 방법에 대해서 알아봤습니다.

구글 스프레드시트 자동화 (코스피 지수 자동 업데이트)

주식을 하는 사람이라면 Investing.com에 자주 들어갈 것이다. 각종 주가지수의 현재 가격뿐 아니라 과거 데이터까지 편하게 확인할 수 있기 때문이다.

투자를 처음 시작했을 때, 퀀트 투자 자료를 만들기 위해 코스피와 나스닥 과거 데이터를 일일이 복사해서 붙여 넣기를 하면서 거의 하루를 꼬박 보낸 적이 있다. 지금 생각하면 단순 무식 무모한 행동이었지만, 지수가 업데이트될 때마다 복사, 붙여 넣기 단순 노가다를 계속했었던 경험을 기억하면 부끄럽다. 

난 개발자가 아니기 때문에 프로그래밍 언어를 몰랐고, 내가 직면한 문제를 어떻게 해결해야 하는지도 몰랐다. 이 문제를 해결하기 위해서는 코딩이 필요하다는 것을 어렴풋이 알고 있었지만, 내가 원하는 기능을 정확히 말해주는 정보를 다룬 국내 포스팅은 찾기 어려웠다. 오늘은 그 해답에 대해 포스팅해보려 한다.

그래서 목적이 무엇이냐? 

스프레드시트 자동 업데이트로 구글링 검색하면 지금 주가를 단순히 가져오는 방법을 다룬 포스팅이 많다. 장황하게 써놓은 게시물이 많지만 그냥 스프레드시트 빈 셀에 =googlefinance("ticker number")를 입력하면 해당 종목의 주가를 가져올 수 있다. 

예를 들어서 내가 가지고 있는 KT의 티커는 030200이므로  =googlefinance("030200")를 입력하면 KT의 실시간 주가를 보여준다. 완벽한 실시간 주가는 아니고 20분 정도 지연된 주가이다. (이걸 실시간으로 볼 수 있는 방법에 대해서는 나중에 포스팅하겠다.)

구글파이낸스 코스피 - gugeulpainaenseu koseupi

내가 구현하고 싶은 기능은 이렇게 보여주는 숫자를 매일 차곡차곡 셀에 자동 기입되게 하는 것이다. 그러면 주가지수의 추이를 파악하기 위해 매일 사이트를 뒤져가면서 확인하는 대신 내 시트만으로 확인할 수 있지 않겠는가?

3시 30분이면 국장 마감이 되니까 대충 오후 7시 정도에 날짜와 함께 업데이트됐으면 좋겠다고 생각했다.  하지만 구글을 열심히 뒤져도 정확히 똑같은 방법을 설명해주는 페이지는 찾지 못했다. 그래도 비슷한 방법을 찾아냈고 이에 방법을 공유하려 한다.

해당 방법은 스마트요원의 실용 구글(smartagent.blog)이라는 블로그에서 힌트를 얻어서 작성하게 되었다. 스마트요원님 블로그에는 스프레드시트의 사용법에 대해서 많이 다루고 있으니 스프레드 시트를 사용하고자 하는 사람이라면 즐겨찾기 해놓으면 좋을 것 같다. 

코스피 지수 자동 업데이트 방법

스프레드시트의 앱스 크립트를 이용해서 코드를 넣고, 트리거 설정을 통해서 내가 정한 시간마다 자동으로 어떠한 값이 기록되게 하면 된다. 

1. 시트에 기본 폼을 입력

구글파이낸스 코스피 - gugeulpainaenseu koseupi

B열 6행부터 차례대로 하루에 한 번 B열의 2행 값이 입력되게 할 것이다. B열의 2행 함수 식은 위에서 설명했듯이 =googlefinance("kospi")이다. 

2. 앱 스크립트에 코드 삽입

function myFunction() {  
  var sheet = SpreadsheetApp.getActiveSheet();    

// Get kospi point
 var kospi = sheet.getRange(2, 2).getValues(); 
 var datarange = sheet.getDataRange();  
 var startRows = datarange.getNumRows();  
 var numRows = startRows +1;    

 // Date of today 
  var dayToday = new Date();  

  // write Date 
  sheet.getRange(numRows, 1).setValue(formatYMD(dayToday));             

 // write Kospi point
 sheet.getRange(numRows, 2).setValue(kospi);

}

function formatYMD(date) {   
  var formattedDate = Utilities.formatDate(date, "GMT", "yyyy-MM-dd");     
  return formattedDate;
}

스크립트 편집기를 실행해서 .gs 파일에 위의 코드를 그대로 복사해준다. 그리고 프로젝트 저장 후, 실행하기를 눌렀을 때 시트에 값이 기록되면 일단 성공이다. 

3. 트리거 생성 

구글파이낸스 코스피 - gugeulpainaenseu koseupi
매일 오후 6~7시 사이 앱스크립트 실행 트리거

왼쪽 시계 아이콘을 누르고 트리거를 실행한다. 위의 사진과 같이 세팅해놓으면 지금부터 매일 오후 6~7시 사이에 앱스 크립트를 자동으로 실행하겠다는 것이고, 내가 원하는 대로 차곡차곡 매일 코스피 지수가 스프레드시트에 쌓일 것이다. 

마치며

인간의 욕심은 끝이 없듯이, 일단 저렇게 자동화를 해놓고 보니 또 의구심과 원하는 것이 생겼다.

  1. 휴장일일 때에도 코스피 지수가 기록된다. 이걸 어떻게 해결할까? 

  2. 이건 하나의 시트에서의 기록인데 다른 시트에서 값을 가져오거나 다른 시트에 값을 기입되게 하는 건 어떻게 하는 걸까? 

해결 방법을 찾는다면 링크를 달아두겠다... 이렇게 무엇을 구현하려고 하면 항상 꼬리의 꼬리를 무는 질문들이 쏟아진다. 그래서 삶이 피곤하기는 하지만.. 호기심은 좀 더 좋은 방향으로 갈 수 있게 해주는 힘이라 믿고 좋게 생각한다. 끝