키움 OpenAPI+ vs 한국투자증권 KIS API — 자동매매 어떤 걸 골라야 할까
알고랩이 359건 이상 자동매매를 제작하면서 가장 많이 받는 질문 중 하나가 "키움이랑 한투 중 뭐 써야 해요?" 입니다. 두 API 모두 운영해본 입장에서, 단순 비교가 아니라 어떤 상황에 어떤 걸 골라야 하는지를 정리합니다. 잘못 고르면 중간에 갈아타야 하는데, 그러면 코드의 80% 이상을 다시 써야 하는 경우가 많습니다. 시작 전 한 번씩 짚어보세요.
결론부터 — 한 줄 요약
- 국내주식 위주 + Windows PC 사용 + 키움 HTS 이미 활성화: 키움 OpenAPI+
- 해외주식(특히 미국) 자동매매: KIS API (또는 IBKR)
- macOS · Linux 에서 개발: KIS API
- 여러 계정 · 봇 동시 운영: KIS API
- 코딩 경험이 적은 분이 직접 만들 때: KIS API (REST 가 단순)
이유를 하나씩 풀어봅니다.
핵심 차이 10가지 — 한눈에
| 항목 | 키움 OpenAPI+ | 한국투자증권 KIS API |
|---|---|---|
| API 방식 | OCX / COM | REST + WebSocket |
| 운영체제 | Windows 전용 | 크로스플랫폼 (Win/Mac/Linux) |
| Python 비트 | 32bit 필수 | 64bit |
| 필수 라이브러리 | PyQt5 + pywin32 | requests / httpx |
| 인증 방식 | 영웅문 자동 로그인 (HTS) | OAuth 2.0 토큰 (24시간) |
| 해외주식 지원 | ❌ (국내만) | ✅ (미국·일본·홍콩·중국·베트남) |
| 시장가 주문 | ✅ 국내 가능 | 국내 ✅ / 해외 ❌ (지정가만) |
| 1계정 동시 실행 | 1개로 제한 | 다중 가능 |
| 실시간 시세 한도 | 화면번호당 100종목 | WebSocket 세션 20개 |
| Rate Limit (요청/초) | 권장 5회 | 국내 20 / 해외 1 |
이제 결정에 영향을 주는 항목들을 깊게 봅니다.
1. 운영체제와 Python 비트 — 가장 먼저 부딪히는 벽
키움 OpenAPI+ 는 OCX (COM 인터페이스) 기반입니다. 이게 의미하는 건:
- Windows 전용 (macOS · Linux 불가)
- Python 32bit 만 호환 (64bit 는 OCX 로드 자체가 실패)
- PyQt5 의
QAxWidget으로 OCX 를 감싸야 Python 에서 호출 가능
이건 "버전을 신경 쓰면 됩니다" 수준의 제약이 아니라, 개발 환경 전체의 결정 요소입니다. 평소 64bit Python 에서 NumPy · Pandas · 머신러닝 라이브러리를 쓰던 분이 키움으로 옮기면, 32bit 버전 패키지가 일부 호환 안 되거나 빌드해야 하는 상황을 자주 만납니다.
KIS API 는 이 모든 게 사라집니다. REST API 라서 OS · 언어 · 비트와 무관합니다. macOS 노트북에서 개발하고 Windows 서버에서 운영하는 일반적인 워크플로우가 그대로 적용됩니다.
실무 팁: macOS 사용자가 키움을 써야 한다면 Windows VM (Parallels, VMware) 또는 별도 Windows PC 가 필수입니다. KIS API 는 그런 우회가 필요 없습니다.
2. 코드 복잡도 — REST 가 압도적으로 단순
같은 작업("주식 1주 매수")을 두 API 로 비교하면 차이가 명확합니다.
키움 (OCX + PyQt5)
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QApplication
app = QApplication([])
ocx = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
ocx.dynamicCall("CommConnect()") # 비동기 — OnEventConnect 콜백 대기
# ... 로그인 완료까지 이벤트 루프 대기
ocx.dynamicCall(
"SendOrder(QString, QString, QString, int, QString, int, int, QString, QString)",
["매수", "0101", account, 1, "005930", 1, 0, "03", ""]
)
# OnReceiveChejanData 콜백 바인딩 + 응답 파싱 별도 필요
KIS API (REST)
import requests
resp = requests.post(
f"{base}/uapi/domestic-stock/v1/trading/order-cash",
headers={"authorization": f"Bearer {token}", "tr_id": "TTTC0802U", ...},
json={"CANO": ..., "PDNO": "005930", "ORD_DVSN": "01", "ORD_QTY": "1", "ORD_UNPR": "0"},
)
result = resp.json() # 즉시 응답
키움은 이벤트 기반 비동기 (콜백 + 시그널) 모델이고, KIS 는 동기 요청-응답 입니다. 이벤트 모델이 익숙하지 않으면 키움은 학습 곡선이 가파릅니다. 특히 이런 함정들이 있습니다.
- TR Busy:
SetInputValue→CommRqData시퀀스가 단일 입력 슬롯을 공유 → 동시 호출 시 입력이 덮어쓰여 "계좌정보를 찾을 수 없습니다" 오류 - SendOrder 9-arg:
dynamicCall을 일반 형식으로 호출하면 가변 인자 매핑이 어긋나 주문이 조용히 실패 - SetRealReg 100종목 한도: 화면번호당 100종목 초과 등록 시 일부가 조용히 실패
이 함정들은 알고랩 키움 자동매매 직접 만들기 vs 외주 글에서 더 자세히 다뤘습니다. KIS REST 는 이런 종류의 함정이 거의 없습니다 — HTTP 응답 코드와 JSON 만 보면 됩니다.
3. 해외주식 — 키움은 아예 못 한다
이게 가장 큰 갈림길입니다. 키움 OpenAPI+ 는 국내주식만 지원합니다 (선물 · 옵션도 국내). 미국 · 일본 · 중국 주식 자동매매를 만들고 싶으면 키움으로는 불가능합니다.
KIS API 는 미국 (NYSE/NASDAQ/AMEX), 일본 (도쿄), 홍콩 (HKEX), 중국 (상해A/심천A), 베트남 (호치민/하노이) 모두 지원합니다. 해외주식 자동매매를 검토 중이시라면 사실상 KIS API 가 거의 유일한 선택지입니다 (국내 증권사 중에서는).
다만 KIS 해외주식에는 별도 함정이 있습니다.
- 시장가 주문 불가 (지정가만) — 손절 자동화 시 트리거가 / 주문가 분리 패턴 필요
- Rate Limit 초당 1회 (국내 20회 대비 1/20) — 1초 폴링 시 잔고 응답에 현재가 통합
- 거래소 코드 종목별 분리 (NASD / NYSE / AMEX) — 잔고 조회는 거래소별 순회 + 종목→거래소 캐시 필수
이 패턴들은 알고랩 KIS API 미국 프리마켓 자동 손절 사례 에서 실제 운영 코드와 함께 정리했습니다.
실무 팁: 미국주식만 자동매매하실 거면 KIS API 보다 IBKR (Interactive Brokers) 이 시장가 · 시간외 · 옵션 · 선물 모두 더 자유롭습니다. 다만 IBKR 은 시장 데이터 유료, TWS / Gateway 상시 실행 등 다른 제약이 있어 한국 거주 개인 트레이더에게는 KIS 가 진입장벽이 낮습니다.
4. 시장가 주문 — 국내는 둘 다, 해외는 KIS 만 그것도 지정가
자동매매에서 시장가 주문이 필요한 대표적 경우는 손절 트리거 발동 시 즉시 청산입니다. 가격이 빠르게 흐를 때 지정가로는 체결 보장이 어렵습니다.
- 국내주식: 키움 · KIS 모두 시장가 가능 (호가구분 "03" /
ORD_DVSN="01") - 해외주식: KIS 는 지정가만 가능
KIS 해외에서 시장가 효과를 내려면 현재가 대비 슬리피지를 반영한 지정가를 사용합니다.
# 손절 시 — 현재가에서 1% 더 낮은 지정가
slippage = 0.01
limit_price = current_price * (1 - slippage)
알고랩이 자주 쓰는 패턴은 트리거 가격과 주문 가격을 분리하는 것입니다. 트리거 가격에서 발동 → 그보다 1~2% 낮은 지정가로 주문 → 현재가가 이미 트리거가보다 낮은 상태이므로 즉시 체결.
5. Rate Limit 과 1초 폴링 — 시스템 설계의 분기점
자동매매의 표준 패턴 중 하나가 "1초마다 가격 · 잔고 폴링"입니다. 이게 가능한지가 시스템 설계에 큰 영향을 줍니다.
| 시나리오 | 키움 | KIS 국내 | KIS 해외 |
|---|---|---|---|
| 1초 폴링 | OK (직렬화 락 필수) | OK (초당 20회 여유) | 빡빡 (초당 1회) |
| 보유종목 30개 동시 시세 | 100종목 한도 내 OK | WebSocket 추천 | 잔고 응답에 시세 통합 |
| 동시 잔고 + 시세 조회 | TR busy 충돌 주의 | 여유 | 잔고 응답으로 통합 처리 |
KIS 해외주식의 초당 1회 제약은 처음엔 빡빡해 보이지만, 잔고 조회 응답에 현재가 (now_pric2) 가 포함되어 있어
별도 시세 조회 없이 한 번에 처리할 수 있습니다. 이걸 알면 1초 폴링 시스템을 무리 없이 구현할 수 있습니다.
6. 1계정 동시 실행 — 봇 여러 개 돌릴 때
키움 OpenAPI+ 는 같은 PC 에서 1계정당 1실행 으로 제한됩니다. 즉, 한 계좌로 "주도주 봇"과 "지수 추종 봇"을 동시에 돌리려면:
- 옵션 A: 한 프로세스 안에 두 전략을 통합
- 옵션 B: 두 번째 봇은 별도 PC + 별도 계정
KIS API 는 OAuth 토큰 기반이라 여러 봇이 같은 계정으로 동시에 동작 가능합니다. 토큰 만료 (24시간) 와 Rate Limit 만 공유 자원으로 관리하면 됩니다.
7. 학습 자료와 커뮤니티 — 키움이 압도적으로 풍부
이건 정량적이지 않은 항목이지만 무시 못 합니다. 키움 OpenAPI+ 는 국내 자동매매 표준으로 자리잡은 지 10년 이상이라, 한국어 블로그 · 강의 · GitHub 코드가 압도적으로 많습니다. 처음 자동매매를 시작하시는 분이 검색해서 답을 찾기 가장 쉬운 환경입니다.
KIS API 는 2022년 이후 본격 보급되었고, 자료는 점점 늘고 있지만 키움보다는 적습니다. 다만 공식 문서가 깔끔하고 (REST API 표준 형식), 모의투자 환경이 실전과 동일 구조라 직접 시도하면서 배우기 좋습니다.
알고랩이 제작 의뢰를 받을 때, 사용자가 직접 만들어보다 막혀서 오시는 비율은 키움 쪽이 더 높습니다. 자료가 많은 만큼 함정도 직접 부딪히는 케이스가 많기 때문입니다.
시나리오별 추천 — 의사결정 트리
둘 다 쓰는 케이스 — 의외로 흔합니다
알고랩 의뢰 중에는 "국내주식은 키움, 미국주식은 KIS" 조합도 자주 있습니다. 이유:
- 국내주식은 키움 자동 로그인 + 자료 풍부 → 키움
- 미국주식은 키움 미지원 → KIS API 필수
같은 PC 에서 두 봇을 동시에 돌리는 것도 가능합니다. 키움 32bit Python 환경과 KIS 64bit Python 환경을 가상환경으로 분리하면 충돌하지 않습니다.
project/
├── kiwoom_bot/ # 32bit venv
│ └── (국내주식 봇)
├── kis_bot/ # 64bit venv
│ └── (미국주식 봇)
└── shared/
├── notifier.py # 텔레그램 공통
└── logger.py
비용 — 둘 다 무료 (조건부)
두 API 모두 API 사용료는 무료입니다. 다만:
- 키움: 영웅문 OpenAPI+ 다운로드 무료. 다만 키움증권 계좌 + 일부 거래 (월 1회 거래 등) 활성도 조건이 있을 수 있음 — 키움 공식 안내 확인 필요.
- KIS: KIS Developers 가입 무료. 모의투자 환경 무료. 실전 거래 시 일반 매매수수료만 발생.
자동매매 시스템의 진짜 비용은 API 료가 아니라 개발 시간 + 운영 안정화 비용입니다. 직접 만들 경우 함정에 부딪히며 디버깅하는 시간이 가장 큽니다.
알고랩의 선택 기준 — 의뢰받을 때
알고랩이 신규 의뢰를 받으면 다음 순서로 플랫폼을 결정합니다.
- 거래 대상 자산 — 해외주식이면 KIS 또는 IBKR
- 의뢰인의 기존 환경 — 이미 키움 HTS 쓰면 키움 우선 (학습 · 운영 부담 ↓)
- 의뢰인의 OS — Mac 이면 KIS 자동 추천
- 전략의 복잡도 — 다중 봇 / 다계정이면 KIS
- 의뢰인이 직접 운영 후 코드 수정 가능성 — 가능하면 KIS REST (이해 쉬움)
이 결정 트리가 거의 모든 케이스를 커버합니다. 예외는 의뢰인이 특정 API 에 대한 강한 선호가 있을 때 정도입니다.
마무리 — 한 줄 정리 다시
| 상황 | 추천 |
|---|---|
| 한국주식, Windows, 키움 HTS 사용 중 | 키움 OpenAPI+ |
| 미국 · 일본 · 중국 주식 자동매매 | KIS API |
| macOS · Linux 에서 개발 | KIS API |
| 한 계정으로 봇 여러 개 운영 | KIS API |
| 코딩 경험 적음, 직접 만들기 시도 | KIS API |
| 국내 + 해외 둘 다 필요 | 키움 + KIS 병행 |
플랫폼 선택은 자동매매 프로젝트 시작 단계에서 가장 중요한 의사결정입니다. 잘못 골라서 중간에 갈아타면 코드의 80% 이상을 다시 써야 하는 경우가 많습니다. 시작 전에 위 항목들을 한 번씩 짚어보시길 권합니다.
참고: 알고랩은 키움 OpenAPI+ · 한국투자증권 KIS API 둘 다 운영 검증된 표준 코드베이스를 보유하고 있어, 어느 쪽이든 동일한 안정성과 짧은 일정으로 제작 가능합니다. 더 자세한 기술 문서는 키움 자동매매 페이지 와 KIS API 페이지 를 참고하세요.