
안녕하세요!
요즘 자동매매, 알고리즘 트레이딩에 관심 있는 분들 많으시죠?
하지만 어떻게 시작해야 할지 막막하셨다면, ‘키움증권 OpenAPI’는 여러분이 가장 먼저 접해야 할 시스템입니다.
OpenAPI는 키움증권에서 제공하는 주식거래 API로, HTS(영웅문)를 거치지 않고도 프로그램으로 주식 주문, 시세조회, 계좌조회 등을 할 수 있게 해주는 인터페이스입니다.
📌 목차
🧠 1. 키움 OpenAPI란?
OpenAPI는 키움증권에서 제공하는 COM(Component Object Model) 기반 API로, 주식 투자자나 개발자가 주식 거래를 자동화하거나 데이터 분석을 위한 시세 수집 등을 할 수 있게 도와줍니다.
📌 주요 기능 요약
기능 | 설명 |
시세 조회 | 현재가, 일봉, 체결강도 등 실시간 시세 수집 |
주문 실행 | 시장가, 지정가 등 다양한 주문 방식 지원 |
계좌 정보 | 보유 종목, 예수금, 매수평균가 등 조회 |
실시간 이벤트 | 호가 변화, 체결 발생 등을 실시간 감지 |
“OpenAPI를 통해 사람의 클릭 없이도, 주식 거래가 자동으로 진행되도록 설계할 수 있습니다.”
📥 2. OpenAPI 사용을 위한 신청 방법
🔹 Step 1. 키움증권 계좌 개설
OpenAPI를 사용하기 위해선 반드시 키움증권의 증권 계좌가 있어야 해요.
모바일 앱(키움증권 계좌개설 앱)을 통해 비대면 계좌 개설이 가능합니다.
🔹 Step 2. 키움 OpenAPI 신청
- 🔢 키움증권 홈페이지 접속
- 🔢 상단 메뉴 [고객센터] → [OpenAPI 신청]
- 🔢 약관 동의 및 신청 완료
모의투자용 OpenAPI는 모의투자센터에서 별도로 신청해야 합니다.
⚙️ 3. 개발 환경 설정 가이드
OpenAPI를 사용하려면 몇 가지 개발 환경을 세팅해야 해요. 처음엔 어렵게 느껴질 수 있지만, 하나씩 따라 하면 충분히 가능합니다.
✅ 필수 프로그램 목록
- 🧩 키움 OpenAPI+ 모듈
- 📦 Python 3.x (권장: 3.10 이상)
- 📌 파이썬-윈도우 COM 연결을 위한 pywin32
- 🖥️ 32bit 기준 개발환경 권장
🔧 설치 경로 안내
- 🔢 OpenAPI+ 설치 파일 다운로드
- 🔢 설치 후 C:\OpenAPI 폴더 확인
- 🔢 [바탕화면]의 'KOA Studio'로 로그인 테스트
OpenAPI는 64bit 파이썬과 호환되지 않으므로 32bit Python 설치가 안정적입니다.
설치 후에는 반드시 관리자 권한 실행으로 KOA Studio 실행을 테스트하세요.
👉 다음 2부에서는 Python을 이용해 실제로 OpenAPI에 접속하고, 종목 정보를 받아오는 **코드 예제**와 함께 실시간 데이터 수신까지 실습해볼 거예요. 기대해주세요!
🐍 Python으로 키움 OpenAPI 연동하는 법
1부에서 환경설정을 마쳤다면 이제 실제로 Python에서 키움 OpenAPI를 불러오고 시세를 조회해보는 실습을 진행할 차례입니다.
이제부터는 진짜 ‘개발자’처럼 다뤄보는 시간이에요.
Python 3.10 32bit 기준 / pywin32 / time 등 기본 모듈 사용
📦 1. pywin32 설치 및 초기 연결
pywin32는 Python과 Windows COM을 연결해주는 필수 모듈입니다.
pip install pywin32
설치가 끝났다면 이제 OpenAPI 모듈을 import해봅시다.
💻 기본 연결 코드
import win32com.client
# 키움증권 OpenAPI 객체 생성
kiwoom = win32com.client.Dispatch("KHOPENAPI.KHOpenAPICtrl.1")
# 로그인 요청
kiwoom.CommConnect()
# 로그인 완료까지 대기 (이벤트 발생 기반 처리 가능)
import time
time.sleep(5)
# 로그인 여부 확인 (0: 성공, 1: 실패)
is_login = kiwoom.GetConnectState()
print("로그인 상태:", "성공" if is_login == 1 else "실패")
✅ win32com.client는 COM 객체 생성용
✅ KHOPENAPI.KHOpenAPICtrl.1은 OpenAPI COM 객체 이름
✅ CommConnect는 로그인 창 실행 함수
📈 2. 종목 코드로 시세 조회하기
키움 OpenAPI에서는 종목 코드를 기반으로 시세 데이터를 조회합니다.
예를 들어 ‘삼성전자’는 코드 ‘005930’이에요.
🧪 현재가 조회 예제
# 삼성전자 현재가 요청
price = kiwoom.GetMasterLastPrice("005930")
print("삼성전자 현재가:", price)
📌 주요 메서드 정리
함수 | 설명 |
GetMasterCodeName(종목코드) | 해당 코드의 종목명 반환 |
GetMasterLastPrice(종목코드) | 해당 종목의 현재가 반환 |
GetMasterListedStockCnt(종목코드) | 상장 주식 수 |
💼 3. 보유 계좌 및 잔고 조회
OpenAPI에서는 CommRqData와 SetInputValue를 사용해 계좌 정보와 보유 종목을 조회할 수 있어요.
"계좌 잔고, 매입단가, 평가손익까지 자동으로 확인할 수 있습니다."
📘 요청 예시 (기초 형태)
kiwoom.SetInputValue("계좌번호", "1234567890")
kiwoom.SetInputValue("비밀번호", "0000")
kiwoom.SetInputValue("비밀번호입력매체구분", "00")
kiwoom.SetInputValue("조회구분", "1") # 1: 잔고조회
kiwoom.CommRqData("잔고요청", "opw00018", 0, "2000")
🖥️ TR 요청 시 반드시 이벤트 핸들링을 통해 결과를 받아야 해요.
📢 다음 단계 예고: 자동 주문 처리
여기까지가 기본적인 연동 및 시세 조회, 계좌 조회입니다.
이제 다음 3부에서는 매수/매도 주문을 자동으로 실행하고, 실시간 이벤트 처리까지 다뤄볼 거예요.
👉 자동매매를 처음 시작하는 분이라면 꼭 따라오셔야 할 핵심 내용입니다. 3부에서 계속 이어집니다! 😎
🤖 키움 OpenAPI 자동매매 시스템 구축
이제 여러분은 OpenAPI 연동, 시세 조회, 계좌 조회까지 마친 상태예요.
이제부터는 실시간 체결 정보를 바탕으로 조건에 따라 자동 주문을 내는 진짜 ‘자동매매 시스템’을 만들어볼 차례입니다.
조건(예: 가격 상승/하락, 거래량 증가 등)이 충족되면 사용자의 개입 없이 프로그램이 자동으로 주문을 실행하는 구조입니다.
📡 실시간 체결 정보 수신하기
키움 OpenAPI는 이벤트 기반 처리 구조입니다. 즉, 특정 이벤트(주가 변동, 주문 체결 등)가 발생하면 자동으로 등록된 메서드를 호출합니다.
💻 이벤트 클래스 구성
import win32com.client
class KiwoomEventHandler:
def OnReceiveRealData(self, code, real_type, data):
if real_type == "체결가":
print(f"[{code}] 실시간 체결가: {data}")
kiwoom = win32com.client.DispatchWithEvents("KHOPENAPI.KHOpenAPICtrl.1", KiwoomEventHandler)
이후 아래 메서드를 통해 종목별 실시간 이벤트를 등록할 수 있습니다.
# 삼성전자 체결 정보 실시간 등록
kiwoom.SetRealReg("1000", "005930", "20;10;15", "0")
✅ 첫 번째 인자: 화면번호 (임의값)
✅ 두 번째 인자: 종목코드
✅ 세 번째 인자: 필드번호 (체결가, 현재가 등)
✅ 네 번째 인자: 기존 등록 해제 여부 (0 = 추가 등록)
🛒 조건에 따라 자동 주문 실행하기
체결 정보가 들어오면, 특정 조건에 따라 자동으로 매수/매도 주문을 실행할 수 있습니다.
📘 자동매수 예시 코드
def auto_buy(code, quantity=1):
kiwoom.SendOrder("자동매수", "1001", "1234567890", 1, code, quantity, 0, "03", "")
- 🟢 주문유형: 1 = 신규매수 / 2 = 신규매도
- 🟢 가격: 0 = 시장가
- 🟢 거래구분: 03 = 시장가
예: 현재가가 60,000원 아래로 떨어지면 자동매수 실행
if current_price < 60000:
auto_buy("005930", quantity=10)
📌 자동매매 시스템 설계 시 주의사항
- ✅ 서버 조회 제한: 초당 1회, 1분당 최대 60회 제한
- ✅ 네트워크/로그인 장애 대비 코드 작성
- ✅ 실전 사용 전 모의투자 환경에서 충분한 테스트
- ✅ 상한가/하한가 종목 체크 필수
GitHub에는 ‘kiwoom-trader’, ‘auto-trader-py’ 등 OpenAPI 기반 자동매매 봇 코드가 다양하게 공개되어 있습니다.
💬 Q&A: 자주 묻는 질문
Q1. Python 말고 다른 언어로도 가능한가요?
가능합니다. Visual Basic, C#, JavaScript 등 COM 기반 언어라면 대부분 사용 가능합니다.
Q2. 실전 투자에서도 OpenAPI로 매매 가능한가요?
네. 실 계좌 인증을 통해 모의환경이 아닌 실거래 환경에서도 자동매매가 가능합니다.
Q3. 하루에 얼마나 자주 주문을 낼 수 있나요?
TR 호출 및 주문 횟수 제한이 존재합니다.
키움증권 기준: 초당 1회, 분당 60회를 넘지 않도록 주의하세요.
Q4. 이벤트 핸들링이 어렵게 느껴져요...
처음엔 그렇지만 익숙해지면 웹 훅, 알림, 조건 검색 등으로 확장 가능합니다. 대신 주석 작성과 모듈화는 꼭 해두세요!
🧾 마무리 정리 & 다음 단계
✅ 이벤트 기반 구조 이해 → 체결 이벤트 수신
✅ 조건 설정 → 자동 주문 실행
✅ 실거래 적용 전 충분한 테스트
✅ 1일 주문/조회 제한, 안전장치 코딩 필수
🎯 다음으로 뭘 하면 좋을까요?
- ✅ 실시간 조건검색 API 연동
- ✅ 종목 자동 스크리닝 알고리즘 개발
- ✅ Telegram, Slack 등으로 실시간 알림 연동
지금까지 따라오신 여러분은 Python 기반 자동매매 시스템의 핵심을 이해하셨습니다. 실전은 이제부터 시작이에요. 🚀
(포스팅의 이미지는 pixabay의 무료 이미지를 사용했습니다.)
'투자' 카테고리의 다른 글
2025년 테슬라 주식 전망: 지금이 매수 타이밍일까? (1) | 2025.04.24 |
---|---|
KB증권으로 미국 주식 투자 시작하기: 계좌 개설부터 첫 거래 준비까지 (0) | 2025.04.20 |
디시인들이 추천한 증권사 총정리! 수수료·앱 사용성·혜택까지 비교 분석 (4) | 2025.04.13 |
한국투자 완벽 가이드 – 성공적인 투자 전략 (2) | 2025.04.01 |
자동 투자 시스템, 정말 효과가 있을까? (3) | 2025.03.29 |