본문 바로가기
무모한 도전-주식 인공지능 만들기

키움증권 Open API에서 주식의 분봉차트를 가지고 오기

by 인터넷떠돌이 2019. 1. 27.
반응형

안녕하세요?


지난주 내내 모의 주식투자를 하면서 거의 1분 단위로 현재가를 체크해서 인공지능이 결정을 내리는데, 일단 지금까지는 두뇌역할을 하는 RLTrader의 수익모델을 만들기 위해서는 주식종목의 '일봉차트'를 가지고 했습니다. 그래서 분단위로 하루종일 감시하라고 해도, 제대로 대응을 못하는 모습을 보여주고 있었습니다. 그래서 이번에는 아예 분봉차트라고 해서, 분단위로 나온 주식종목의 차트가 있습니다. 이 차트를 가지고서 수익모델을 만드는 과정에 들어가려고 합니다. 그러기 위해서는 먼저 키충증권 Open API에서 이 주식의 분봉차트를 가지고 오는 작업이 먼저 필요하다는 생각이 들었습니다.



먼저 Qt Designer를 열어서, 위 스크린샷에서 보이는 것처럼 분봉차트를 가져오기 위한 버튼을 따로 만들어서 저장해 주는 것을 잊지 말도록 합니다.



다음으로는 pytrader.py로 가서, 위 스크린샷처럼 새로 추가된 버튼을 위한 코드를 집어 넣어 주도록 하며, 다음으로는 연결이 된 메서드인 minute_candel_data를 만들어 주러 갑니다. 원래는 candle이 되어야 하는데, 하다보니 오타를 내서 candel이 되었습니다.



일단 메소드 자체는 이전에 일봉차트의 데이터를 키움증권 Open API로 부터 가지고 오는 것과 똑같이 만들어 주는 작업을 하였습니다.  다만 이후부터는 차이가 나기 시작합니다.



먼저 차이점이 있다면, 이전에는 기준일자라고 적힌 부분이 원래는 있는데, 그 부분을 지우고 틱범위라고 바꾸었습니다. 그리고 입력값인 1은 1분 단위를 의미한다고 볼 수 있습니다.




다음으로는 kiwoom.py로 가서, trdata를 받는 곳으로 간 다음에, 여기서 opt10080이라는 TR을 전송해서 서버로 부터 받으면 작동을 하는 코드를 추가해 주도록 합니다. 그리고 이제 연결이 되어 있는 메서드를 만들어 주어야 하는 일이 남아 있습니다.



그리고 하나 잊었는데, 키움증권 서버에서 한번에 보내줄 수 있는 양은 한계가 있어서 언제나 남아 있는 데이터가 있을 수 있는데, 이에 대한 대비도 while문으로 해 주어야 합니다.



그리고 실수로 처음으로 comm_rq_data를 요청하면 남아 있는 데이터가 없기 때문에 0으로 해야 하는데, 2로 해 주었기 때문에, 이를 0으로 바꾸어 주도록 합니다.



그럼 이제는 kiwoom.py로 가서, 한번 opt10080이 오면 나오는 메서드를 만들어서 데이터를 받을 준비를 합니다. 여기서 원래는 일자라고 되어 있는 부분을 체결시간으로 고쳐서 놓기만 하면 되기는 되었습니다.




이제 pytrader를 실행시키고 나서, 종목코드를 입력한 다음, 저장경로를 지정해서 한번 가동시킬 준비를 하도록 합니다.



잠시간의 시간이 지나서 데이터 베이스 파일이 제대로 생성이 되는 것을 볼 수 있었습니다.



마지막으로 데이터 베이스를 열어서, 제대로 종목코드의 데이블이 생성이 된 것을 볼 수 있었습니다. 여기서 가장 과거의 데이터가 가장 위로 가도록 만드는 것도 성공했으며, 이제부터는 고글 코랩을 이용해서 한번 수익모델을 만들어 보는 시도를 하는 과정이 남아 있다는 생각이 듭니다.

반응형