개발/Python 프로젝트: 주식 자동 매매

[주식 자동 매매] 3. 한국투자증권 오픈 API로 주식 데이터 가져오기 (파이썬 예제 포함)

honeypeach 2025. 12. 20. 20:30

 

✅ 한국투자증권 오픈 API로 주식 데이터 조회하기

(파이썬 실습 코드 포함)

주식 자동매매나 데이터 분석에 도전해보고 싶으신가요?

한국투자증권 오픈 API(OpenAPI) 를 활용하면
파이썬 코드로 HTS(홈트레이딩시스템)에서 하던 대부분의 기능을 직접 구현해볼 수 있습니다.

 

이 글에서는
👉 삼성전자 1분봉 데이터를 API로 직접 조회하는 실습 코드를 예제로 다룹니다.
초보자도 그대로 따라할 수 있도록 설명과 주석을 함께 정리했습니다.


1. 준비 사항

(1) 한국투자증권 계좌 개설 및 모의투자 신청

 

https://securities.koreainvestment.com/main/Main.jsp

뱅키스 연말 절세 2종 이벤트 2025.11.25~2025.12.31 뱅키스

securities.koreainvestment.com

 


(2) KIS Developers 개발자 등록

  • 한국투자증권 홈페이지에서 [OpenAPI] → [KIS Developers] 메뉴로 이동
  • 개발자 등록 후 App Key, App Secret 발급
 

KIS Developers

한국투자증권 Open API 포탈

apiportal.koreainvestment.com

 

👉 이후 모든 API 요청에 이 값들이 필요합니다.


(3) 파이썬 환경 준비

API 요청을 보내기 위해 requests 패키지를 사용합니다.

pip install requests

2. 접근 토큰(access token) 발급받기

한국투자증권 API는 보안을 위해
접근 토큰(access token) 을 발급받아야 사용할 수 있습니다.

아래 코드를 실행하면 토큰을 받을 수 있습니다.

import requests

BASE_URL = "https://openapivts.koreainvestment.com:29443"
APPKEY = "여기에_여러분_APPKEY_입력"
APPSECRET = "여기에_여러분_APPSECRET_입력"

url = f"{BASE_URL}/oauth2/tokenP"
headers = {
    "Content-Type": "application/json"
}
body = {
    "grant_type": "client_credentials",
    "appkey": APPKEY,
    "appsecret": APPSECRET
}
res = requests.post(url, headers=headers, json=body)
data = res.json()
print(data["access_token"])  # 출력되는 토큰 문자열을 복사!
  • 출력되는 access_token 값을 복사해 두세요
  • 이 토큰은 하루 동안만 유효합니다.

3. 실습 코드 : 삼성전자 1분봉 데이터 가져오기

이제 본격적인 실습입니다.
위에서 발급받은 access_token 값을 아래 코드에 붙여넣고 실행해보세요.

import requests

BASE_URL = "https://openapivts.koreainvestment.com:29443"
APPKEY = "여기에_APPKEY"
APPSECRET = "여기에_APPSECRET"

ACCESS_TOKEN = "여기에_발급받은_access_token_값_붙여넣기"

url = f"{BASE_URL}/uapi/domestic-stock/v1/quotations/inquire-time-itemchartprice"
headers = {
    "content-type": "application/json; charset=utf-8",
    "authorization": f"Bearer {ACCESS_TOKEN}",
    "appkey": APPKEY,
    "appsecret": APPSECRET,
    "tr_id": "FHKST03010200",    # 분봉 데이터 조회용 트랜잭션ID
    "custtype": "P"              # 개인 투자자 (모의투자)
}
params = {
    "FID_ETC_CLS_CODE": "",
    "FID_COND_MRKT_DIV_CODE": "J",   # 주식시장
    "FID_INPUT_ISCD": "005930",      # 삼성전자 종목코드
    "FID_INPUT_HOUR_1": "093000",    # 기준시간(예: 09:30)
    "FID_PW_DATA_INCU_YN": "Y"
}
try:
    res = requests.get(url, headers=headers, params=params)
    data = res.json()
    print(data["output1"]["hts_kor_isnm"])  # 종목 한글명 출력
    for item in data["output2"]:
        print(f"시간: {item['stck_bsop_date']} {item['stck_cntg_hour']} 가격:{item['stck_prpr']}")
except Exception as e:
    print(e)

삼성전자_결과값


▶️ 코드 설명

  • headers
    • appkey, appsecret, authorization(access token)은 반드시 포함해야 함
    • tr_id는 분봉 조회용 트랜잭션 ID
  • params
    • FID_INPUT_ISCD 값만 바꾸면 다른 종목 조회 가능
    • 005930 → 삼성전자
  • 출력 결과
    • 각 분마다의 날짜 / 시간 / 가격 정보가 출력됨

4. 마무리

이렇게 하면
한국투자증권 OpenAPI를 이용해 원하는 주식의 분봉 데이터를 파이썬으로 직접 조회할 수 있습니다.

이제 이 데이터를 활용해

  • 나만의 주식 데이터 분석
  • 자동매매 로직 구현
  • 백테스트 코드 작성

까지 확장해볼 수 있겠죠?

👉 더 많은 기능은 KIS Developers 공식 문서를 참고해보세요.
주식 프로그래밍의 세계가 훨씬 넓어집니다.

728x90