안녕하세요! 이번 포스트에서는 파이썬을 이용하여 자동매매 시스템을 개발하는 방법 중 하나인 키움증권 API를 이용해 기본 정보를 요청하는 방법에 대해 알아보겠습니다. 주식 거래에 관심 있는 많은 분들이 매매를 자동화하고자 하여 이 주제를 선택하신 것이라 생각됩니다.
1. 키움증권 API란?
키움증권 API는 키움증권에서 제공하는 프로그램을 통해 주식 매매 및 정보를 조회할 수 있는 인터페이스입니다. 이 API를 이용하면 키움증권 계좌에 접근하여 주식 거래 및 정보를 자동으로 가져올 수 있습니다. 특히, 파이썬을 사용하면 간편하게 요청하고 응답을 처리할 수 있어 많은 개발자들이 선호하고 있습니다.
2. 개발 환경 설정하기
키움증권 API를 사용하기 위해서는 다음의 사전 준비가 필요합니다:
- 키움증권 계좌 개설
- 키움증권 OpenAPI+에 가입
- 키움증권 API 설치 및 환경설정
- Python 및 필요 청구 라이브러리 설치
2.1 키움증권 OpenAPI+ 설치
키움증권에서 제공하는 OpenAPI+ 프로그램을 다운로드 받아 설치합니다. 설치 후 API 사용을 위해 로그인을 해야 합니다.
2.2 Python 설치
Python이 설치되어 있지 않다면 공식 홈페이지를 통해 다운로드하고 설치해 주세요.
2.3 필요한 라이브러리 설치
pip install pyqt5
키움증권 API는 Qt 라이브러리를 사용하므로, PyQt5를 설치해야 합니다.
3. 키움증권 API 접속하기
키움증권 API에 접속하기 위해서는 우선 키움 API를 초기화해야 합니다. 이를 위해 다음과 같은 코드를 작성할 수 있습니다.
import sys
from PyQt5.QtWidgets import QApplication
from kiwoom import Kiwoom
app = QApplication(sys.argv)
kiwoom = Kiwoom()
kiwoom.CommConnect() # 로그인 창 띄우기
이 코드는 PyQt5를 사용하여 로그인하기 위한 팝업 창을 생성합니다. 사용자가 자신의 계정으로 로그인하면 API에 접근할 수 있습니다.
4. 기본 정보 요청하기
로그인 후 기본적인 주식 정보를 요청하기 위해서는 GetMasterCodeName 메소드를 사용합니다. 이 메소드를 통해 주식의 코드에 대한 이름을 조회할 수 있습니다.
code = "005930" # 삼성전자
name = kiwoom.GetMasterCodeName(code)
print(name) # 삼성전자
4.1 주식 정보 조회 예제
다음 코드는 여러 주식의 코드를 입력받아 그에 대한 이름을 출력하는 예제입니다.
codes = ["005930", "000660", "035420", "051910"] # 삼성전자, SK하이닉스, NAVER, LG생활건강
for code in codes:
name = kiwoom.GetMasterCodeName(code)
print(f"{code}: {name}")
5. 추가적인 정보 요청하기
기본적인 주식 정보를 조회하는 것 외에도 다른 정보를 요청할 수 있습니다. 예를 들어, 현재가, 시가, 고가, 저가 등의 정보를 요청할 수 있습니다. 이를 위해 GetMasterLastPrice, GetMasterOpen, GetMasterHigh, GetMasterLow 메소드를 사용할 수 있습니다.
current_price = kiwoom.GetMasterLastPrice(code)
open_price = kiwoom.GetMasterOpen(code)
high_price = kiwoom.GetMasterHigh(code)
low_price = kiwoom.GetMasterLow(code)
print(f"{code} 현재가: {current_price}, 시가: {open_price}, 고가: {high_price}, 저가: {low_price}")
6. 정리
이번 포스트에서는 키움증권 API를 이용해 기본 정보를 요청하는 방법에 대해 살펴보았습니다. API를 통해 다양한 정보를 손쉽게 가져와 자동매매 로직에 활용할 수 있습니다. 다음 포스트에서는 실시간 주식 정보를 가져오는 방법과 이를 이용한 자동매매 시스템의 기본 구조에 대해 설명할 예정입니다. 여러분의 많은 관심 부탁드립니다!