[Python] 주식 차트 그리기와 매매 이력 표시하기 1, 제작 동기 & API (FinanceDataReader, 키움 Open API, plotly, matplolib)steemCreated with Sketch.

in #jjangjjangman5 years ago

안녕하세요.
경제적 자유를 꿈꾸는 워렌공핏입니다 :)

'핀테크' 주제를 새로 추가했습니다. 투자를 하면서 있으면 편리하겠다 생각하는 것들을 프로그래밍으로 직접 만들어볼 생각입니다. 그리고 그 과정과 내용을 '핀테크' 게시판에 포스팅하려고 합니다.

이번에 하려고 하는 것은 주식 차트에 매매 이력 표시하는 기능을 만드는 것입니다.

제작 동기

주식 거래를 하기 위해 사용하는 HTS (Hoem Trading System)에서 본인의 매매 이력을 차트에 표시해주는 기능을 알고 계시나요? 이 기능을 사용하면 매매일지를 작성하기에 매우 편리합니다.


삼성증권 HTS에서 제공하는 매매 이력 표시 기능

일봉 차트 상에 매매 이력을 표시해주는 기능은 대부분의 증권사 HTS에서 제공하고 있습니다. 그러나! 조사를 열심히 해 본 결과 수수료 평생 무료 이벤트를 하는 증권사 중에는 분봉에서도 차트에 매매 기록을 표시해주는 기능의 HTS를 제공하는 곳이 없었습니다. 요즘 단타 매매를 많이 하는데요. 매매일지를 쓰기 위해 차트에 일일이 저의 매매 기록을 보며 화살표를 그려 넣는 것이 여간 귀찮은 일이 아니었습니다.


분봉 차트에 매매 이력을 직접 그리는 모습

제가 주로 사용하는 삼성증권 고객센터에 두 번이나 분봉상 매매 이력 표시 기능 추가를 제안했었는데요. 결과는 예상하시다시피 '적극 검토하겠다'라는 답변뿐이었습니다. 이걸 만들기가 뭐가 그리 어려운 걸까요. 요즘 부자아빠 가난한 아빠 책을 독서 중인데. 남이 바뀌길 바라며 불평하는 것보다는 내가 바뀌는 것이 더 빠르고 쉽다.라는 구절이 있었습니다. 그 말을 이 상황에 적용하여 저는 불평만 하기보다는 제가 직접 프로그램을 만들기로 결정하였습니다.

프로그램 설명

1. 기능


: 증권사 HTS에서 나의 매매 이력을 불러와 해당 종목의 차트를 그리고 그 위에 나의 매매 이력을 표시한다.

2. 입력

(1) 종목명

(2) 해당 종목의 매매 이력

3. 출력


: 매매 이력이 표시된 차트

사용 프로그래밍 언어


Python (파이썬)

Python (파이썬) 프로그래밍 언어를 사용할 예정입니다. 이 언어를 사용하는 이유는 언어 자체가 이해하기 쉽습니다. 그리고 가장 큰 장점은 각종 분야에서 유용하게 사용할 수 있는 수없이 많은 API들이 무료로 제공된다는 점입니다. 이 때문에 요즘 대세 프로그래밍 언어가 되었죠.

API 선정

1. 차트 드로잉 API 선정

Python의 다양한 API 중 주식 차트를 손쉽게 그릴 수 있도록 도와주는 API가 있습니다. 검색해본 결과 두 가지의 대표적인 차트 드로잉 API를 찾아볼 수 있었습니다.

(1) Plotly


출처: plotly

Interative 한 차트를 그려낼 수가 있는 장점이 있습니다. 아래 예제 그림을 보시면 마우스를 갖다 대면 시고저종 가격도 표시가 되고 어느 날짜의 가격인지도 하이라이트가 됩니다. 이외에 그림 캡처 기능, 차트 확대 기능 등이 있습니다. 매매 일지를 작성하기 위한 차트를 그리는 것이 목적인데 프로그램 제작 시 그 이외의 너무 많은 것들을 신경 쓰게 될 수도 있다는 단점이 있을 수도 있겠습니다.


Plotly를 활용한 차트 그리기 예시 (출처: Plotly)

(2) Matplotlib


출처: matplotlib

트레이딩 차트를 그리기 위한 전문 도구는 아닙니다. 각종 분야의 데이터를 차트나 플롯으로 그려주는 API입니다. MATLAB과 비슷하다고 생각하시면 되겠습니다. Matplotlib를 이용해 차트를 그린 아래의 예시를 보면 MATLAB스럽게 결과가 출력된 것을 보실 수 있습니다. 차트가 예쁘진 않지만 매매일지를 쓰기 위한 정도로는 충분해 보입니다.


Matplotlib를 활용한 차트 그리기 예시
(출처: 파이썬으로 배우는 알고리즘 트레이딩)

2. 주식 데이터를 얻기 위한 API 선정



차트를 그리기 위해서는 주식 종목에 대한 데이터를 불러와야 합니다. 주식 종목 데이터를 불러올 수 있는 API 두 가지를 조사해 보았습니다.

(1) Finance Data Reader API


출처 https://financedata.github.io/​

FinanceDataReader API는 한국 주식 가격, 미국 주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리입니다. 간편하게 각종 금융 데이터를 불러올 수 있습니다. 그러나 한국 주식 가격의 경우 데이터의 최소 단위가 일 단위인 것으로 보입니다. 때문에 Finance Data Reader API를 이용해서는 분봉 차트를 그려낼 수가 없을 것으로 판단됩니다.

(2) 키움 Open API

출처: 구글 이미지

키움증권에서 제공하는 키움 Open API입니다. 사용하기에는 FinanceDataReader보다 까다롭지만 분봉 데이터를 불러올 수 있습니다.



이번 글을 통해서는 매매일지 차트 그리기 프로그램을 만드는 동기와 프로그램의 기능을 정의하고 사용할 API 들에 대해 조사를 했습니다. 어떤 API를 사용해야 할지 대충 윤곽이 나왔습니다. 다음 포스팅에서는 주식 데이터를 불러오는 과정, 차트를 그리는 과정, 매매 내역을 그리는 방법에 대해 차례대로 포스팅해보겠습니다.

Sort:  

짱짱맨 호출에 응답하여 보팅하였습니다.

Congratulations @kongstar! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

The Steem community has lost an epic member! Farewell @woflhart!
SteemitBoard - Witness Update
Do not miss the coming Rocky Mountain Steem Meetup and get a new community badge!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.27
TRX 0.13
JST 0.032
BTC 64802.57
ETH 2975.30
USDT 1.00
SBD 3.69