본문 바로가기

주식/주식 종목 추천 봇 개발기

주식 종목 추천 봇 만들기 [3] 키움 증권 API Key 발급 받기

이전 포스팅 읽기 👇

 

주식 종목 추천 봇 만들기 [2] Telegram Bot 생성 / API Key 발급 받기

telegram bot을 만드는건 굉장히 간단하다.1. Telegram API Key 발급 받는 방법우선 당연하지만 Telegram API Key를 발급받기 위해서는 Telegram 계정이 필요하다. 계정 생성 후 아래 단계를 진행하면 된다.Telegra

financeodyssey.tistory.com


주식 정보를 가져오기 위해 키움 증권의 api key를 발급받아야 한다.

키움 증권 홈페이지에 보면 굉장히 친절하게 발급 받는 방법이 나와 있다.
https://www.kiwoom.com/h/customer/download/VOpenApiInfoView

1. 키움 증권 Open API+ 사용 방법

1. Open API 사용 신청하기

홈페이지 > 고객서비스 > 다운로드 > Open API > 키움 Open API+ > 서비스 사용 등록/해지 에서 사용 신청을 할 수 있다.

2. 키움 Open API+ 모듈 다운로드

키움증권 홈페이지 에서 바로 다운로드 받을 수 있다. 다운로드 후 setup 파일을 실행시키면 된다.

3. 상시 모의투자 신청

홈페이지 > 모의투자 > 상시모의투자 > 주식/선물옵션 > 안내 에서 모의 투자 신청을 해야 api를 사용할 수 있다.

4. KOA Studio 다운로드

API 사용 프로그램 개발 시 API 명세를 보기 위해 KOA Studio를 이용해야 한다.
그렇게 친절하게 뭐가 나와있진 않지만.. 그래도 공식 doc 역할을 하는 시스템이기 때문에 KOA Studio를 참고해야 한다.
KOA Studio에 접속하면 아래와 같이 각 화면 별 사용 가능한 TR 목록과 함수 목록들을 확인할 수 있다.

5. 키움 증권 API 사용 프로그램 개발

OCX 탑재 프로그램을 개발하여 사용하면 된다.

 

2. 키움 증권 Open API 프로그램 개발 방법

나는 OCX 탑재 프로그램을 python으로 구현하기 위해서 PyQT를 사용해야 하지만, pykiwoom 이라는 편리한 모듈이 개발되어 있어 이것을 사용하기로 하였다.
pykiwoom 모듈을 사용하면 내가 PyQT 부분을 구현할 필요 없이 질의 부분만 구현하면 된다.

1. pykiwoom 모듈 설치

> pip install pykiwoom

위 명령을 통해 pykiwoom 모듈을 설치한다.

2. 로그인 코드 구현

from pykiwoom.kiwoom import *

kiwoom = Kiwoom()  
kiwoom.CommConnect(block=True)

위 코드를 수행하면 로그인 창이 뜨는데, 여기서 자동 로그인이 되도록 설정해주어야 한다.
KOA Studio에 로그인 후 파일 > Open API 접속 을 눌러 api 접속을 완료하면, PC 작업표시줄에 아래와 같은 아이콘이 뜬다.
해당 아이콘 우클릭하여 계좌 비밀번호 입력 창에 들어간 후, 계좌 비밀번호를 입력, AUTO 로그인에 체크 한다.

이러면 다음 부터는 자동으로 로그인 처리가 되어 위 코드를 실행시켰을 때 따로 타이핑할 필요 없이 자동으로 로그인이 될 것이다.

3. TR 조회

특정 기능들은 따로 함수로 구현되어 있는 것들도 있지만 (ex. 조건 검색식 조회), 주로 TR 조회를 많이 사용하게 될 것이다.
KOA Studio에서도 제공하는 서비스들을 TR로 구분하여 설명한다.
아래는 TR 조회를 하는 간단한 예시 코드이다.

from pykiwoom.kiwoom import *
# 로그인
kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

# TR OPT10001 조회 
df = kiwoom.block_request("opt10001",
                          종목코드="005930",
                          output="주식기본정보",
                          next=0)
print(df)

OPT10001의 내용을 KOA Studio에서 확인하면 다음과 같다.

INPUT은 종목 코드이고, OUTPUT은 싱글데이터로 주식기본정보이다.
해당 항목의 값들을 block_request 함수 인자로 위 샘플 코드와 같이 전달하면 조회 결과가 dataframe 형태로 return된다.

output으로 싱글데이터 외에 멀티데이터가 있는 TR 요청도 있는데, 그런 경우 멀티데이터를 조회 결과 값으로 받고 싶다면 멀티데이터 명을 output 인자값으로 전달하면 된다.
이제 위 코드를 기반으로 원하는 요청을 보내고, 응답을 받아 사용하면 된다.

한 가지 주의할 점은 TR 요청에는 요청 수 제한이 있으므로 이 부분을 신경써서 연속적으로 요청할 경우 적당한 시간 간격을 유지해주는 부분을 추가로 구현해야 한다.
기본적으로 초당 5회 제한이 깔려 있어 0.2s 씩 sleep 을 걸어줘야 하는데, 여기에서 추가적으로 0.2s sleep을 걸더라도 지속적으로 많은 수의 요청을 보내면 또 요청 제한에 걸리므로 자신이 요청하고자 하는 수에 맞게 sleep 시간을 늘려주어야 한다.

키움 증권에서 공식적으로 제시한 가이드는 다음과 같다.

서버리스크를 회피하면서, OpenAPI 의 모든 고객분들께서 조회 차단을 회피하는 가이드는 아래와 같습니다.
(1초당 5회로 기작업되어 있다는 전제하에 이를 기준으로 한 가이드 입니다.)
- 1초당 5회 조회를 1번 발생시킨 경우 : 17초대기
- 1초당 5회 조회를 5연속 발생시킨 경우 : 90초대기
- 1초당 5회 조회를 10연속 발생시킨 경우 : 3분(180초)대기

위 부분을 고려하여 질의 코드를 작성하면 된다.


다음 포스팅 읽기 👇

 

주식 종목 추천 봇 만들기 [4] 텔레그램 봇으로 키움 API 응답 전달

이제 본격적으로 키움에 API로 질의한 내용을 텔레그램 봇한테 전달하여 내가 확인할 수 있도록 하면 된다.우선 내가 첫 번째로 알고 싶은 내용은 키움의 조건검색식 조회 결과이다.(물론 조건검

financeodyssey.tistory.com