본문 바로가기
카테고리 없음

[코딩-주식]한국투자증권 API 문서 따라하기 01

by tistorymaster 2024. 9. 7.

▶ OAuth인증

1. api 접근 권한 코드 분석

- 액세스 토큰 발급(필수)

 

 

 

출처: 한국투자증권 사이트

2. 개인정보 모듈 함수(ki_config.py)

# 홈페이지에서 API서비스 신청시 받은 Appkey, Appsecret 값 설정
# 개인정보 예시
# myToken = "1234-123456789ABCD-123456789ABCD-123456789ABCDEFGHIJKLMNO"


#모의투자
APP_KEY= "P000000000000000000000000000000L"
APP_SECRET= "f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000="
CANO= "12345678"

ACNT_PRDT_CD= "01"
URL_BASE= "https://openapivts.koreainvestment.com:29443"
STOCK_BALANCE = "VTTC8434R"
CASH_BALANCE = "VTTC8908R"
#BUY_ORDER = "VTTC0802U"
#SELL_ORDER = "VTTC0801U"
BUY_ORDER = "VTTC0012U"
SELL_ORDER = "VTTC0011U"



# #실전투자
APP_KEY= "P000000000000000000000000000000L"
APP_SECRET= "f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000="
CANO= "12345678""

# ACNT_PRDT_CD= "01"
# URL_BASE= "https://openapi.koreainvestment.com:9443"
# STOCK_BALANCE = "TTTC8434R"
# CASH_BALANCE = "TTTC8908R"
# BUY_ORDER = "TTTC0802U"
# SELL_ORDER = "TTTC0801U"
# BUY_ORDER = "TTTC0012U"
# SELL_ORDER = " TTTC0011U"

3. 액세스 토큰 발급 함수

def get_access_token():
    """토큰 발급"""
    while True:
        headers = {"content-type":"application/json"}
        body = {"grant_type":"client_credentials",
        "appkey":APP_KEY, 
        "appsecret":APP_SECRET}
        PATH = "oauth2/tokenP"
        URL = f"{URL_BASE}/{PATH}"
        res = requests.post(URL, headers=headers, data=json.dumps(body))

 '''
 print(res.json())
{
 'access_token':'.............................'                                # 발급토큰
 'access_token_token_expired': '2024-00-00 00:00:00', # 유효기간
 'token_type': 'Bearer',                                                     # API 호출 시, 접근토큰유형 "Bearer" 입력. ex) "Bearer eyJ...."
 'expires_in': 86400                                                          # 유효기간(초)
 }
 '''

        time.sleep(0.2)
        try:
            ACCESS_TOKEN = res.json()["access_token"]
            ACCESS_TOKEN_EXPIRED = res.json()["access_token_token_expired"]
            return ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED
        except:
            print("접근 토큰 발급이 불가능합니다")
            print(res.json())
            time.sleep(1)

▶ 확인코드(koreainvest_auto_main.py)


print("# 1. 시작")
import requests
import json
import time
import ki_config  # 개인정보에 대한 별도화일 링크용

################################################################################################################################## 
'''
한국투자증권에 접속하기 위한 보안승인 코드 (공통)
'''
################################################################################################################################## 
def get_access_token():
    """토큰 발급"""
    while True:
        headers = {"content-type":"application/json"}
        body = {"grant_type":"client_credentials",
        "appkey":APP_KEY, 
        "appsecret":APP_SECRET}
        PATH = "oauth2/tokenP"
        URL = f"{URL_BASE}/{PATH}"
        res = requests.post(URL, headers=headers, data=json.dumps(body))
        '''
        print(res.json())
        {
        'access_token':'....'                                # 발급토큰
        'access_token_token_expired': '2024-00-00 00:00:00', # 유효기간
        'token_type': 'Bearer',                              # API 호출 시, 접근토큰유형 "Bearer" 입력. ex) "Bearer eyJ...."
        'expires_in': 86400                                  # 유효기간(초)
        }
        '''
        time.sleep(0.2)
        try:
            ACCESS_TOKEN = res.json()["access_token"]
            ACCESS_TOKEN_EXPIRED = res.json()["access_token_token_expired"]
            print('# 2. 접근토큰 발급 완료')
            return ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED
        except:
            print("접근 토큰 발급이 불가능합니다")
            print(res.json())
            time.sleep(1)
################################################################################################################################## 

'''
한국투자증권 주식투자 자동매매 프로그램 시작
'''
APP_KEY = ki_config.APP_KEY
APP_SECRET = ki_config.APP_SECRET
URL_BASE = ki_config.URL_BASE

CANO = ki_config.CANO
ACNT_PRDT_CD = ki_config.ACNT_PRDT_CD

ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED = get_access_token()

 

 

# 화면 출력

(tensor37) F:\python>C:/Users/webti/anaconda3/envs/tensor37/python.exe f:/python/STOCKS/Korea_Investment/koreainvest_test2.py
# 1. 시작
# 2. 접근토큰 발급 완료