본문 바로가기
퀀트 분석/트레이딩 시스템 개발

파이썬 주식 트레이딩 시스템 (1) - API 발급

by 쿼카퀀트 2023. 12. 9.
728x90

 

안녕하세요, 이전에 REST API로 개발 가능한 국내 증권사 API 라는 주제로 블로그 글을 한번 작성한 적이 있는데요,

이 중 한국투자증권 API를 활용해 주가 데이터 수집, 잔고 조회, 실제 주문부터 제가 실제로 API 활용 매매를 하며 얻은 사소한 팁까지 블로깅을 해보려 합니다.

 

한국투자증권의 API는 두 가지(기존 API, KIS Developers)로 나뉘는데요, 기존 API는 윈도우에서 32bit 파이썬으로만 연결할 수 있어 개발이 어려운 반면, KIS Developers는 REST API를 활용하기 때문에 리눅스 환경에서 쉽게 개발할 수 있습니다.

 

API 발급

증권사 API와 파이썬을 연결하기 위해 가장 먼저 API를 발급받아야 합니다. 이번 포스팅에선 API를 발급받는 방법을 순서대로 설명합니다.

 

 

1. 한국투자증권 계좌 개설

API를 발급받기 위해선 계좌 개설이 필요합니다.

한국투자증권 앱이나 홈페이지에서 계좌를 개설해주세요. API용 계좌가 따로 있는게 아니므로, 기존 계좌가 있으신 분은 해당 계좌를 사용해도 무관합니다.

 

2. API 발급

계좌를 개설했다면, API 발급은 간단합니다.

 

한국투자증권 홈페이지에 접속해, 아래 사진처럼 "트레이딩 - Open API - KIS Developers - KIS Developers 서비스 신청하기" 메뉴에 들어갑니다.

로그인 창이 뜨면 로그인 후, 홈페이지 안내대로 API를 발급받습니다.

API 발급 신청 루트

 

 

API 발급이 끝나고 신청현황 창에 들어가면, 아래와 같은 화면을 볼 수 있습니다. 이 창이 뜬다면 API 발급도 완료되었습니다!

API 발급 신청현황 페이지

 

신청일자로부터 1년 후 API가 만료되는데요, 만료 1개월 전 카카오톡으로 갱신하라고 연락오니까 만료일을 적어둘 필요는 없습니다.

여기서 오른쪽 아래 APP Key, APP Secret 두 값을 저장해두세요. 이 값은 외부 노출되지 않도록 신경써주세요.

 

3. API 접근토큰 발급

이제 발급받은 API로 증권사 데이터 접근권한(토큰)을 얻어보겠습니다.

이 토큰은 발급 이후 24시간동안 유효하며, 데이터 수집, 주문관련 API를 사용할 때 함께 전달되어 내 정보를 증명하는 역할을 합니다.

 

아래 코드처럼 토큰을 발급받을 수 있으며, 앞서 발급받은 APP Key를 api_key에, APP Secret을 secret_key에 넣어주면 됩니다.

코드를 실행하면, access_token에 토큰이 저장됩니다.

import requests
import json

api_key = '~~~'
secret_key = '~~~'

base_url = 'https://openapi.koreainvestment.com:9443'

headers = {"content-type":"application/json"}
body = {
        "grant_type":"client_credentials",
        "appkey":api_key, 
        "appsecret":secret_key,
        }
url = base_url + '/oauth2/tokenP'
res = requests.post(url, headers=headers, data=json.dumps(body)).json()

access_token = res['access_token']

 

ERROR Case: 코드 실행한 후 바로 재실행하면 토큰이 제대로 발행되지 않습니다. 최근 생긴 제약사항으로, 1분에 한번만 access_token을 발급받을 수 있습니다. 따라서, 토큰을 다시 발급받으려면 1분 후에 코드를 실행해주세요.

실제 트레이딩에선 코드 실행 맨 처음에 토큰을 발급받고, 필요할때마다 그 토큰을 재사용하는 방법을 추천합니다.

 

4. 마무리

이렇게 발급받은 토큰을 활용해 내 계좌 잔고 조회, 주문과 같은 작업을 할 수 있습니다.

다음 포스팅에서 API 사용 방법을 더 자세히 알아보도록 하겠습니다.

 

그럼 모두 성투하세요!

 

 

728x90

댓글