본문 바로가기

IT와 과학/주식자동매매기술

키움증권 REST API로 주식 분봉차트 조회하기 (Python)

728x90
반응형

키움증권 REST API로 주식 분봉차트 조회하기 (Python)

📌 개요

키움증권에서 제공하는 REST API를 활용하여 Python으로 주식의 분봉차트를 조회하는 방법을 소개합니다. 이 API를 통해 특정 종목의 실시간 차트 데이터를 프로그래밍적으로 가져올 수 있어, 자동매매나 데이터 분석에 활용할 수 있습니다.

🚀 핵심 기능

  • 실시간 분봉차트 데이터 조회: 1분, 3분, 5분, 10분, 15분, 30분, 45분, 60분 단위 차트 조회 가능
  • 연속 조회 지원: 대량의 과거 데이터도 순차적으로 조회 가능
  • 수정주가 옵션: 분할/배당 등을 반영한 수정주가로 조회 가능

💻 구현 코드

import requests
import json

def fn_ka10080(token, data, cont_yn='N', next_key=''):
    """
    키움증권 REST API를 통한 주식 분봉차트 조회 함수
    
    Args:
        token (str): 접근 토큰
        data (dict): 요청 파라미터
        cont_yn (str): 연속조회 여부 ('N' 또는 'Y')
        next_key (str): 연속조회 키
    """
    
    # 1. API 엔드포인트 설정
    host = 'https://api.kiwoom.com'  # 실전투자 서버
    endpoint = '/api/dostk/chart'
    url = host + endpoint

    # 2. 요청 헤더 구성
    headers = {
        'Content-Type': 'application/json;charset=UTF-8',
        'authorization': f'Bearer {token}',
        'cont-yn': cont_yn,
        'next-key': next_key,
        'api-id': 'ka10080',  # 분봉차트조회 TR명
    }

    # 3. API 호출
    response = requests.post(url, headers=headers, json=data)

    # 4. 응답 결과 출력
    print('응답 코드:', response.status_code)
    print('응답 헤더:', json.dumps({
        key: response.headers.get(key) 
        for key in ['next-key', 'cont-yn', 'api-id']
    }, indent=4, ensure_ascii=False))
    print('응답 데이터:', json.dumps(response.json(), indent=4, ensure_ascii=False))

# 실행 예제
if __name__ == '__main__':
    # 접근 토큰 설정 (실제 토큰으로 교체 필요)
    MY_ACCESS_TOKEN = '[발급받은_접근_토큰]'
    
    # 요청 파라미터 설정
    params = {
        'stk_cd': '005930',      # 종목코드 (삼성전자)
        'tic_scope': '1',        # 틱범위 (1분)
        'upd_stkpc_tp': '1',     # 수정주가 적용
    }
    
    # API 호출
    fn_ka10080(token=MY_ACCESS_TOKEN, data=params)
    
    # 연속 조회가 필요한 경우
    # fn_ka10080(token=MY_ACCESS_TOKEN, data=params, cont_yn='Y', next_key='연속조회키')

📋 주요 파라미터 설명

요청 파라미터

파라미터 설명 값 예시

stk_cd 종목코드 '005930' (삼성전자)
tic_scope 틱범위 '1': 1분, '5': 5분, '60': 60분
upd_stkpc_tp 수정주가구분 '0': 미적용, '1': 적용

틱범위 옵션

  • 1: 1분봉
  • 3: 3분봉
  • 5: 5분봉
  • 10: 10분봉
  • 15: 15분봉
  • 30: 30분봉
  • 45: 45분봉
  • 60: 60분봉

🔧 연속 조회 처리

대량의 과거 데이터를 조회할 때는 연속 조회 기능을 활용합니다:

# 첫 번째 조회
response = fn_ka10080(token, params)

# 응답 헤더에서 연속조회 정보 확인
next_key = response.headers.get('next-key')
cont_yn = response.headers.get('cont-yn')

# 연속 데이터가 있으면 추가 조회
if cont_yn == 'Y' and next_key:
    fn_ka10080(token, params, cont_yn='Y', next_key=next_key)

📈 활용 사례

  1. 자동매매 시스템: 실시간 차트 패턴 분석
  2. 백테스팅: 과거 데이터를 활용한 전략 검증
  3. 데이터 분석: 주식 시장 트렌드 분석
  4. 알림 시스템: 특정 조건 만족 시 알림 발송

🚨 주의사항

  • 접근 토큰 관리: 토큰은 보안상 안전하게 관리해야 합니다
  • API 호출 제한: 과도한 호출 시 제한이 걸릴 수 있습니다
  • 에러 처리: 네트워크 오류나 API 오류에 대한 예외 처리 필요
  • 모의투자: 실제 거래 전 모의투자 환경에서 테스트 권장

🔗 관련 API

키움증권에서 제공하는 관련 API들:

  • ka10082: 주식 주봉차트 조회
  • ka10080: 주식 분봉차트 조회 (현재 API)
  • 기타 차트 관련 API들

📚 참고 자료


면책조항: 이 내용은 키움증권 AI 코딩 어시스턴트를 참고하여 작성되었으며, 실제 투자에 활용 시 충분한 검토와 테스트가 필요합니다. 투자 결과에 대한 책임은 투자자 본인에게 있습니다.

728x90
반응형