반응형

파이썬 Matplotlib을 이용한 데이터 시각화 프로그래밍8 - Open API를 이용해 주식 차트 그리기




이번에는 인터넷에 공개된 API를 이용해 주식 정보를 받아오고 이에 대한 차트를 Matplotlib으로 그려보도록 하겠습니다. 불행히도 주식 정보를 API로 제공하는 국내 사이트는 없습니다.


증권사에서 자체적인 API를 제공해주고 있긴 한데, 그냥 가져다 쓰기에는 무척이나 번거로운 작업이고 절차도 까다롭습니다. 하지만 걱정은 여기까지~


우리나라 주가 정보를 편리하게 제공해주는 사이트가 하나 있는데, 바로 미국의 야후입니다.

주가 정보를 제공하는 주소는 다음과 같습니다.


http://chartapi.finance.yahoo.com/instrument/1.0/{종목코드}/chartdata:type=quote;range=10y/csv

 

예를 들어 삼성전자의 종목코드는 005930입니다. 야후는 전세계 주식 정보를 제공해주고 있어서 이 종목코드가 어느 나라의 것인지 구분하기 위해 종목코드 뒤에 식별자를 부여해줘야 하는데, 우리나라는 KS가 식별자입니다. 따라서 005930.KS가 유효한 삼성전자 종목코드가 됩니다.


인터넷 브라우저를 열고 아래의 주소를 입력한 후 엔터를 쳐보세요~


http://chartapi.finance.yahoo.com/instrument/1.0/005930.KS/chartdata;type=quote;range=10y/csv


그러면 아래와 같이 브라우저에 삼성전자에 대한 주가 정보가 텍스트로 나타납니다.



브라우저에 나타난 데이터에서 우리가 관심이 있는 것은 주가입니다. 바로 요부분입니다.

20060717,594000.0000,598000.0000,576000.0000,584000.0000,224900
....
....

이 부분은 모두 콤마로 6개 부분으로 구분되어 있습니다. 
순서대로 날짜, 종가, 고가, 저가, 시작가, 거래량입니다.

우리는 이 데이터를 받아와서 Matplotlib으로 주식 차트를 그려볼 겁니다. 일반적인 주식 차트는 그날의 종가를 기준으로 그려줍니다. 자 그러면 아래의 코드를 보시죠~

stockreader.py

stockreader.py의 주요 부분만 살펴보겠습니다.

>>> bytesdate2num(fmt, encoding='utf-8')
이 함수는 8자리로 된 날짜 데이터를 Matplotlib이 인식하는 숫자로 변경합니다. 

이제 실제로 주식 차트를 그려주는 아래의 코드를 작성합니다.

 

>>> viewStockTrend(compcode):

종목코드 compcode를 인자로 받고, 이 인자에 .KS를 추가하여 야후 주식 Open API의 {종목코드} 부분에 대입하고 urlopen() 함수를 이용해 호출합니다.
데이터를 한줄씩 읽은 후 콤마로 구분하고 그 크기가 6인 경우에, 'values'와 'labels'라는 문자가 데이터에 없으면 바로 주식 정보이므로 이것만 읽습니다. Matplotlib으로 해당 데이터를 읽어 차트를 그립니다.

삼성전자의 종목코드인 005930에 대해 위 코드를 실행하면 아래와 같은 주가 트렌드 차트가 화면에 출력됩니다.


반응형

+ Recent posts