주식 자동매매 시스템을 개발하는 것은 요즘 주식 투자자들 사이에서 매우 인기 있는 주제입니다. 이러한 시스템은 컴퓨터 프로그램을 사용하여 자동으로 주식을 매매하는 메커니즘을 의미합니다. 본 강좌에서는 파이썬을 이용한 자동매매 개발의 첫 단계로, 키움증권 API를 사용하여 계좌 정보를 가져오는 방법을 알아보겠습니다.
1. 키움증권 API란?
키움증권 API는 키움증권의 Open API를 통해 제공되는 서비스로, 주식, 선물 및 옵션 거래뿐만 아니라 계좌 정보, 시세 정보 등을 프로그램을 통해 조회하고 트레이딩할 수 있는 기능을 제공합니다. 이 API를 통해 투자자는 다양한 전략을 자동으로 실행할 수 있습니다.
2. 키움증권 API 사용 준비하기
키움증권 API를 사용하기 위해서는 다음의 준비가 필요합니다.
- 키움증권 계좌 개설: 키움증권에 계좌를 개설해야 합니다.
- Open API 신청: 키움증권에서 Open API를 사용할 수 있도록 신청합니다.
- API 환경 설정: API를 사용할 컴퓨터에서 환경을 설정해야 합니다.
2.1 Open API 신청 방법
키움증권 홈페이지에 로그인 후, Open API 서비스 신청을 통해 API 사용 권한을 요청할 수 있습니다. 요청이 승인되면 API 키를 발급받게 됩니다. 이를 통해 API에 접근할 수 있습니다.
2.2 API 환경 설정
API를 사용하기 위해서는 Python에서 HTTP 요청을 보내고 받을 수 있는 패키지가 필요합니다. 우리는 주로 pywin32
라이브러리를 사용하여 윈도우의 COM 객체와 상호작용할 것입니다. 이 라이브러리는 다음과 같은 방법으로 설치할 수 있습니다.
pip install pywin32
3. 계좌 정보 가져오기
이제 키움증권 API를 통해 계좌 정보를 가져오는 방법을 실제 코드와 함께 알아보겠습니다.
3.1 키움증권 API 로그인
API를 사용하기 위해서는 먼저 로그인을 해야 합니다. 다음의 코드는 PyQt5를 사용하여 로그인 창을 띄우고 로그인 상태를 확인하는 방법입니다.
import os
import sys
import pythoncom
import win32com.client
from PyQt5 import QtWidgets
class Kiwoom:
def __init__(self):
self.app = QtWidgets.QApplication(sys.argv)
self.khw = win32com.client.Dispatch("KH OPENAPI") # 키움 API 객체 생성
self.khw.OnEventConnect.connect(self._on_event_connect)
def login(self):
self.khw.CommConnect() # 로그인 요청
def _on_event_connect(self, err_code):
if err_code == 0:
print("로그인 성공")
else:
print("로그인 실패")
if __name__ == "__main__":
kiwoom = Kiwoom()
kiwoom.login()
pythoncom.PumpThreads() # 이벤트 루프 유지
3.2 계좌 정보 가져오기
로그인을 성공적으로 했다면 이제 계좌 정보를 가져올 수 있습니다. 키움증권 API를 통해 계좌 정보를 조회하는 방법은 아래와 같습니다.
class Kiwoom:
# 이전 코드 이어서
def get_account_info(self):
account_list = self.khw.GetLoginInfo("ACCNO") # 계좌번호 조회
print("계좌 목록:", account_list)
# 모든 계좌 정보 요청하기
for account in account_list.split(';'):
if account:
print("계좌번호:", account)
if __name__ == "__main__":
kiwoom = Kiwoom()
kiwoom.login()
pythoncom.PumpThreads()
kiwoom.get_account_info() # 계좌 정보 가져오기
위의 코드에서는 사용자의 계좌 목록을 가져오고, 각 계좌 번호를 출력합니다. GetLoginInfo
메서드를 사용하여 계좌 정보를 가져올 수 있습니다. 이후 이 정보를 바탕으로 필요한 다른 정보를 조회하거나 매매를 진행할 수 있습니다.
4. 계좌 별 자산 정보 조회하기
각 계좌의 자산 정보를 조회하는 방법을 알아보겠습니다. 계좌에서 보유한 주식의 수량, 평가 금액 등을 확인할 수 있습니다.
class Kiwoom:
# 이전 코드 이어서
def get_account_assets(self):
# 자산 정보 요청 (AT: 평가금액/현재가)
self.khw.SetInputValue("계좌번호", "입력할 계좌번호")
self.khw.SetInputValue("비밀번호", "") # 비밀번호
self.khw.SetInputValue("상담유형", "0") # 0: 일반, 1: 현물, 2: 선물, 3: 옵션
self.khw.CommRcvData("010101", 0) # 요청
if __name__ == "__main__":
kiwoom = Kiwoom()
kiwoom.login()
pythoncom.PumpThreads()
kiwoom.get_account_assets() # 자산 정보 가져오기
5. 결론
이번 강좌에서는 키움증권 API를 활용하여 계좌 정보를 가져오는 방법을 설명하였습니다. 앞으로 더 나아가 매매 기능 구현, 시세 조회 기능 등을 추가하여 본인만의 자동매매 시스템을 개발하는 방법을 배울 수 있습니다. 다음 강좌에서는 실제 매매를 위한 추가적인 기능을 구현해보겠습니다.