본문 바로가기
Trading

한국투자증권 REST API

by 토마스.dev 2024. 11. 27.
반응형

예전에는 증권사 API 를 사용하려면 윈도우에서 공인인증서로 로그인을 한 다음에야 가능했기 때문에 너무 불편했다. 특히나 클라우드에서 하려면 윈도우즈 셋팅을 전부 다 해주고 인증서까지 받은 다음에 해야했으니.. 윈도우즈 사용비용까지 발생했다.

이제는 REST API 도 나오기 때문에 한결 편해졌다. 단순히 키만 발급받아서 사용하면 되니 너무너무 편해졌다.

한국투자증권의 경우 kis 라는 파이썬 라이브러리를 제공하고 있기 때문에 훨씬 편하게 사용할 수 있다.

https://github.com/koreainvestment/open-trading-api

 

GitHub - koreainvestment/open-trading-api: Korea Investment & Securities Open API Github https://apiportal.koreainvestment.com

Korea Investment & Securities Open API Github https://apiportal.koreainvestment.com - koreainvestment/open-trading-api

github.com

https://wikidocs.net/book/7559

 

파이썬으로 배우는 오픈API 트레이딩 초급 예제

Python을 활용한 한국투자증권 KIS Developers 트레이딩 오픈API 예제입니다. 서비스 신청부터 국내주식시세조회, 매수, 매도까지 초급 수준에 적절한 매매 방법을…

wikidocs.net

 

https://wikidocs.net/book/7847

 

파이썬으로 배우는 한국투자증권 Websocket 사용 예제

Python을 활용한 한국투자증권 KIS Developers 트레이딩 오픈API Websocket 예제입니다. 실시간으로 주식 호가, 체결가, 체결 여부 등을 확인할 수 있습니다…

wikidocs.net

 

한국투자증권 매우매우 칭찬한다.

반응형

한국투자증권 REST API와 KIS 라이브러리 소개 및 파이썬 예시 코드


1. 한국투자증권 REST API와 KIS 라이브러리 소개

한국투자증권은 투자자들이 프로그래밍을 통해 금융 데이터를 활용할 수 있도록 REST API를 제공하고 있다. 이러한 API를 보다 편리하게 사용하기 위해 KIS 라이브러리가 개발되었다. 이 라이브러리를 활용하면 인증 절차와 API 호출을 간소화하여 개발 생산성을 높일 수 있다.

주요 기능:

  • 인증 관리: 액세스 토큰 발급 및 자동 갱신
  • 시세 조회: 주식, ETF 등의 실시간 및 과거 시세 데이터 조회
  • 주문 실행: 매수, 매도 주문 생성 및 관리
  • 계좌 정보 조회: 잔고, 거래 내역 등 계좌 관련 정보 접근

2. KIS 라이브러리를 이용한 간단한 사용 방법

사전 준비:

  • API 키 발급: 한국투자증권 개발자 센터에서 APP_KEY와 APP_SECRET을 발급받는다.
  • 라이브러리 설치: kis 라이브러리를 설치한다.
pip install kis

예시 코드:

from kis import Kis

# API 키 설정
APP_KEY = '발급받은 APP_KEY를 입력하세요'
APP_SECRET = '발급받은 APP_SECRET을 입력하세요'
ACCESS_TOKEN = None  # 초기에는 None으로 설정

# Kis 인스턴스 생성
kis = Kis(APP_KEY, APP_SECRET)

# 인증 토큰 발급
ACCESS_TOKEN = kis.get_access_token()

# 토큰 설정
kis.set_access_token(ACCESS_TOKEN)

# 주식 시세 조회 함수
def get_stock_price(stock_code):
    response = kis.get_stock_price(stock_code)
    if response.status_code == 200:
        data = response.json()
        stock_name = data['stock_name']
        current_price = data['current_price']
        print(f"종목명: {stock_name}, 현재가: {current_price}원")
    else:
        print("데이터 조회에 실패하였다.")

# 사용 예시
get_stock_price('005930')  # 삼성전자 종목 코드

설명:

  • Kis 인스턴스 생성: Kis 클래스를 사용하여 APP_KEY와 APP_SECRET을 설정한다.
  • 인증 토큰 발급: get_access_token 메서드를 통해 액세스 토큰을 발급받고 set_access_token으로 설정한다.
  • 시세 조회: get_stock_price 메서드를 이용하여 특정 종목의 현재가를 조회한다.
  • 응답 처리: 응답이 성공적이면 종목명과 현재가를 출력하고, 그렇지 않으면 오류 메시지를 출력한다.

주의사항:

  • 실제 kis 라이브러리의 사용 방법과 메서드 이름은 공식 문서를 참고해야 한다.
  • API 호출 시 예외 처리를 추가하여 오류에 대비하는 것이 좋다.
  • 개인 정보와 인증 정보는 안전하게 관리해야 한다.

참고로 필자가 사용하는 예수금 계산 방법이다. 미증시 예수금 계산시 유용하다.

def get_balance():
    logger.info('get_balance')
    resp = kis.fetch_present_balance()
    if resp.get('rt_cd') != '0':
        raise Exception(f"예수금조회 오류: {resp}") 

    #{'pchs_amt_smtl': '145', 'evlu_amt_smtl': '147', 'evlu_pfls_amt_smtl': '1', 'dncl_amt': '0', 'cma_evlu_amt': '0', 'tot_dncl_amt': '4781794', 'etc_mgna': '0', 'wdrw_psbl_tot_amt': '4781794', 'frcr_evlu_tota': '19084', 'evlu_erng_rt1': '1.1900000000', 'pchs_amt_smtl_amt': '189131', 'evlu_amt_smtl_amt': '191386', 'tot_evlu_pfls_amt': '2255.00000000', 'tot_asst_amt': '12676325', 'buy_mgn_amt': '0', 'mgna_tota': '0', 'frcr_use_psbl_amt': '19084.00', 'ustl_sll_amt_smtl': '7873659', 'ustl_buy_amt_smtl': '189598', 'tot_frcr_cblc_smtl': '4800878.000000', 'tot_loan_amt': '0'}

    output = resp.get('output3')

    logger.debug(output)

    usd_krw = get_usd_krw()

    tot_dncl_amt = float(output.get('tot_dncl_amt')) # 총예수금액
    ustl_sll_amt_smtl = float(output.get('ustl_sll_amt_smtl')) # 미결제매도금액합계(매도하고 나면 바로 예수금에 채워지는게 아니라서 이 값이 필요)
    frcr_evlu_tota = float(output.get('frcr_evlu_tota')) # 외화평가총액(외화예수금))
    ustl_buy_amt_smtl = float(output.get('ustl_buy_amt_smtl')) # 미결제매수금액합계(매수하고 나서 예수금이 바로 차감되는게 아니라서 이 값이 필요)

    # 공식: 총예수금액 + 매결제매도금액합계 + 외화평가총액 - 미결제매수금액합계
    balance = tot_dncl_amt + ustl_sll_amt_smtl + frcr_evlu_tota - ustl_buy_amt_smtl

    return balance / usd_krw
반응형

'Trading' 카테고리의 다른 글

비상계엄과 비트코인  (0) 2024.12.04
이더리움 500만원 돌파  (0) 2024.11.28
비트코인 매도 (매매봇)  (0) 2024.11.26
트럼프와 바이오주  (0) 2024.11.23
비트코인 수익률 무려 1644% !!  (0) 2024.11.22