키움증권의 경우 Open API를 제공하고 있으며, 실제로 사용할 함수의 종류는 키움증권 사이트 내 '개발 가이드' 파일 또는 'KOA Studio'라는 프로그램을 통해 확인할 수 있다. 이번 글에서는 이 함수들을 파이썬 내에서 구축하는 방법과 정확히 어떤 절차를 거쳐 함수들이 실행되는지에 대해 살펴보고자 한다.
(1) 어떤 정보가 궁금한데요 ? - SetInputValue와 CommRqData
1. SetInputValue (입력 값 설정) [설명] Tran 입력 값을 서버 통신 전에 입력한다. [용례] SetInputValue (아이템명, 입력 값)
2. CommRqData (Command Request Data, 데이터 요청 명령 실행) [설명] Tran을 서버로 전송한다. [용례] CommRqData(사용자구분명, tr코드, 연속조회여부, 화면번호)
이 내용을 보면 확인할 수 있듯이, 키움증권의 Open API는 `SetInputValue`라는 함수를 통해 조회하고자 하는 정보가 요구하는 정보를 입력한 후, `CommRqData`라는 함수를 통해 그 정보를 서버로 전송하는 절차로 구성되어 있다. 그렇다면 정확하게 어떤 정보를 요구하는지 그리고 그를 `CommRqData` 내에서 어떻게 요청할 수 있는지 등에 대해 아는 것이 중요한데, 이는 앞서 이야기했던 KOA Studio라는 프로그램 내에서 확인할 수 있다. 아래의 사진으로 이해해보자.
위의 사진을 보면 'opt10001 : 주식기본정보요청'이라는 내용 밑에 INPUT과 종목코드라는 부분이 있는데, 여기서 opt10001이 앞서 이야기했던 tr코드에 해당되는 부분이고 INPUT 내의 종목코드가 바로 `SetInputValue`라는 함수를 통해 값을 입력해야 하는 변수에 해당되는 부분이다. 그리고 그 아래의 OUTPUT은 `SetInputValue`와 `CommRqData` 두 개의 함수를 갖고 정보를 요청했을 때 얻어올 수 있는 정보들을 나타낸다.
따라서 위의 opt10001에 대한 정보를 요청하기 위해서는 다음과 같은 코드가 필요하다.
물론 이 `GetCommData`를 실행하기 위해선 `def receive_trcode:`라는 별도의 함수가 필요하다. 즉, CommRqData 내에서 입력했던 trcode인 opt10001을 요청하고, 키움증권 서버에서 opt10001이라는 trcode가 가진 정보들을 반환해주었을 때 trcode = opt10001인 상태로 정보가 돌아오게 되는데, opt10001인 경우에 `GetCommData`를 실행하도록 해야 오류 없는 정보를 받아올 수 있다. 예를 들어 요청한 trcode는 opt10001인데 `GetCommData`에서 opt10001이 포함하지 않고 있는 아이템명(예를 들면 opt10003이 갖고 있는 정보인 누적 거래량 및 누적 거래대금 등)을 받아오려 한다면 오류가 발생하기 때문이다.
다음 글에서는 요청한 trcode가 opt10001인 경우에 특정 함수를 실행하도록 하고, 그 함수 안에서 opt10001이 가지고 있는 정보를 불러오는 코드를 구축할 예정이다.