Platform · 국내주식

키움증권 자동매매 프로그램
맞춤 제작

키움증권 OpenAPI+ 기반으로 조건검색 기반 매수·매도, 실시간 시세 모니터링, 자동 주문 체결, 텔레그램 알림까지 하나의 프로그램에 담아드립니다. 알고랩(AlgoLab)이 지난 4년간 키움 자동매매 120건 이상 제작하며 축적한 노하우를 반영합니다.

한 줄 요약 키움 자동매매를 새로 만든다면 지금은 REST API가 기본이고, 기존 OpenAPI+(Windows 전용 OCX · 32bit 파이썬)는 유지·전환 대상입니다. REST 기준 흐름은 ① 접근토큰 POST /oauth2/token → ② 주문 POST /api/dostk/ordr(api-id: kt10000) → ③ 미체결 확인 ka10075 · 잔고 kt00018(둘 다 /api/dostk/acnt)입니다. 실전 도메인은 api.kiwoom.com, 모의투자는 mockapi.kiwoom.com으로 완전히 별개라 앱키·토큰을 따로 받습니다. 알고랩은 이 배관 전부를 대신 만들어 드리고, 고객은 매매 규칙만 정하시면 됩니다.

키움 자동매매로 무엇이 가능한가요?

고객이 직접 짜놓은 전략을 자동화하는 것이 핵심입니다. 수동으로 조건검색 → 매수 → 손절·익절 관리까지 하면 장 시간 내내 모니터링해야 하고, 감정이 개입되거나 타이밍을 놓치는 일이 생깁니다. 자동매매 프로그램은 이 흐름 전체를 PC에 위임합니다.

자주 제작하는 키움 자동매매 유형

기술 구조

키움 OpenAPI+는 Windows 전용 OCX 방식이라 몇 가지 제약이 있습니다. 알고랩은 이 제약을 전부 고려해서 안정적으로 돌아가는 구조로 제작합니다.

항목사양
API키움증권 OpenAPI+ (KHOPENAPI.KHOpenAPICtrl.1 OCX)
언어Python 3.x 32bit 필수 (OCX COM 제약)
GUI 프레임워크PyQt5 + QAxWidget
운영체제Windows 10 / 11 (32bit 영웅문 OpenAPI+ 설치)
배포 방식PyInstaller .exe 단독 실행 (설정은 별도 config 파일)
로그인 방식자동 로그인 (SetAutoLogin) 또는 수동 로그인
실시간 등록 한도최대 100종목 (API 제약)
동시 실행1계정당 1개 (API 제약)

핵심 기능 구성 요소

OpenAPI+로 남을까, REST로 갈까

상담에서 가장 먼저 갈리는 질문입니다. 정답은 하나가 아니라 지금 무엇을 갖고 계신가에 따라 달라집니다.

기준OpenAPI+ (기존)REST API (신규)
실행 환경Windows 전용 · 영웅문 설치 필요OS 무관 · 리눅스 서버·클라우드 가능
파이썬32bit 필수(OCX COM 제약)제약 없음(일반 HTTP 호출)
연결 방식OCX 이벤트 콜백 · TR Busy 관리 필요요청·응답이 독립 · api-id로 구분
24시간 무인 운영PC 상주 필요 · 화면 잠김·업데이트에 취약서버에 올려 두면 끝
조건검색식HTS 조건식 호출이 익숙한 방식REST에서도 조건검색 지원(구조가 다름)
기존 자산이미 만든 봇이 있으면 유지가 저렴새로 만든다면 이쪽이 기본

정리하면 새로 만드는 경우 REST, 이미 OpenAPI+ 봇이 돌고 있고 문제가 없다면 유지가 기본선입니다. 다만 "PC를 계속 켜 둬야 한다"가 불편해지기 시작했다면 그때가 전환 시점입니다 — 실제로 전환 의뢰의 대부분이 성능이 아니라 운영 피로 때문에 들어옵니다. 전환은 매매 규칙을 다시 짜는 일이 아니라 증권사와 대화하는 층만 바꾸는 작업이라, 전략 로직이 잘 분리돼 있는 봇일수록 빠르게 끝납니다.

REST로 붙으면 실제 코드는 이렇게 생겼습니다

"맡기면 뭘 만들어 주는 건가"가 잘 안 그려지신다면, 봇이 장중에 반복하는 호출을 직접 보시는 편이 빠릅니다. 아래는 키움 REST API 공식 명세 기준의 최소 형태입니다(값은 예시).

# ① 접근토큰 — POST /oauth2/token
{
  "grant_type": "client_credentials",
  "appkey":     "AxserEsdcredca.....",
  "secretkey":  "SEefdcwcforehDre2fdvc...."
}
# 응답
{ "expires_dt": "20241107083713", "token_type": "bearer", "token": "WQJCwyqInphKnR3bSRtB9NE1lv..." }
# ② 매수 주문 — POST /api/dostk/ordr   (헤더 api-id: kt10000)
{
  "dmst_stex_tp": "KRX",      # 거래소 구분 (KRX / NXT)
  "stk_cd":       "005930",   # 종목코드 6자리
  "ord_qty":      "10",       # 주문수량
  "ord_uv":       "71800",    # 주문단가
  "trde_tp":      "0"         # 매매구분 (0 지정가 / 3 시장가)
}

# ③ 미체결 확인 — POST /api/dostk/acnt   (헤더 api-id: ka10075)
{ "all_stk_tp": "0", "trde_tp": "0", "stex_tp": "0" }
# 응답의 목록 이름은 oso, 남은 수량은 oso_qty

여기서 사고가 나는 지점이 정해져 있습니다. 응답 값이 전부 문자열이라 그대로 더하면 수량이 어긋나고, 잔고(kt00018)의 종목코드는 005930이 아니라 A005930으로 오며, 목록이 길면 헤더 cont-yn·next-key로 이어 받아야 누락이 없습니다. 각각을 따로 정리해 두었습니다 — REST vs OpenAPI+ 전체 그림, 주문 kt10000, 미체결 ka10075, 잔고 kt00018, 토큰 유효기간, 호출 제한 429.

보안 고지. 알고랩은 어떤 경우에도 고객님의 appkey·secretkey 값을 요구하지 않습니다. 키는 고객님 환경의 설정 파일에만 두고, 제작 과정에서는 모의투자 환경으로 검증합니다.

※ 위 API ID·경로·항목명은 2026-08-20 시점 키움증권 REST API 공식 명세 기준이며, 증권사 명세는 예고 없이 바뀔 수 있으므로 실제 구현 전 개발자 포털에서 현재 값을 확인합니다.

조건검색식은 실제로 어떻게 연결되나

이 페이지가 처음부터 말하는 "조건검색식 연동"이 코드로는 어떻게 생겼는지 궁금하실 수 있습니다. 조건검색은 다른 기능과 달리 GET·POST 엔드포인트가 아니라 WebSocket 위에서 JSON 메시지를 주고받는 구조입니다. 그래서 붙이는 방식이 통째로 다릅니다.

# wss://api.kiwoom.com:10000/api/dostk/websocket 접속 후 순서

{ "trnm": "LOGIN",   "token": "<access_token>" }   # ① 인증
{ "trnm": "CNSRLST" }                              # ② 내 조건식 목록 + seq(일련번호)
{ "trnm": "CNSRREQ", "seq": "003", "search_type": "1" }  # ③ 검색 요청
#    search_type "0" = 단발 조회 / "1" = 실시간 등록(편입·이탈이 계속 들어옴)
{ "trnm": "CNSRCLR", "seq": "003" }                # ④ 실시간 해제

여기서 가장 흔한 사고는 "실시간이 조용히 멈추는 것"입니다. 서버가 보내는 trnm: "PING"을 그대로 되돌려 보내지 않으면 몇 분 뒤 세션이 끊어지는데, 에러가 안 나기 때문에 봇은 계속 도는 것처럼 보입니다. 조건은 잡히는데 주문이 안 나가는 상태가 됩니다. 조건식은 고객님이 HTS에서 만든 것을 seq로 불러 쓰는 방식이라 전략을 바꾸실 때 프로그램을 다시 만들 필요가 없다는 게 이 구조의 장점입니다. 메시지 규격과 재연결 처리는 키움 REST API 조건검색 — CNSRLST로 실시간 편입 받기에 전부 정리해 두었습니다.

해외주식·미국주식도 되나요

문의가 가장 많이 갈리는 지점입니다. 결론부터 말씀드리면 "키움 API"라는 한 이름 아래 서로 다른 세 가지가 있고, 미국주식에서 되는 범위가 각각 다릅니다. 국내주식에 있는 기능이 해외에도 그대로 있을 거라고 가정하고 제작을 시작하면 중간에 설계를 바꿔야 합니다. 환전도 국내에는 없던 관문입니다.

무엇이 되고 무엇이 안 되는지, 그리고 스펙이 바뀌었을 때 스스로 확인하는 방법까지 키움 해외주식 API 되나 — REST 미국주식 지원 범위에 정리해 두었습니다. 한국투자증권 KIS 쪽과 비교하고 싶으시면 키움과 KIS, 자동매매용으로 뭐가 다른가를 함께 보시면 됩니다. 상담 때 "국내만 쓸지, 해외까지 갈지"를 먼저 정해 주시면 증권사 선택부터 달라집니다.

제작 비용·기간 가이드

요구사항 복잡도에 따라 편차가 있지만, 키움 자동매매는 대체로 다음 범위 안에서 제작됩니다.

유형예상 비용제작 기간
단순 조건검색 기반 (익절·손절 고정)80~120만원5~7일
+ 실시간 모니터링 GUI + 텔레그램 알림120~180만원7~10일
+ 백테스팅 모듈 · 파라미터 최적화180~280만원10~14일
+ 주도주 추종 · 트레이딩뷰 웹훅 등 복합 전략250~400만원14~21일

기본 셋업 포함 항목: 일자별 로그 파일, 오류 예외 처리, 텔레그램 에러 알림, 설정 파일(config.json) 외부 분리, PyInstaller 단독 실행 파일(.exe) 패키징. 납품 후 30일 무료 수정 기간 포함.

자주 묻는 질문

실거래 하기 전에 모의투자로 먼저 테스트 가능한가요?

네. 키움증권은 모의투자 서버를 별도로 제공합니다. 동일한 OpenAPI+로 접속만 모의계좌로 바꾸면 되기 때문에, 제작 완료 후 1~2주 모의투자로 검증한 뒤 실거래 전환을 권장합니다.

장 마감 후에도 프로그램이 돌아가나요?

시세 TR은 장 시간(09:00~15:30)만 동작하지만, 실시간 종목 모니터링과 일별 전략 결과 집계, 익일 매매 준비 등은 24시간 동작하도록 구성할 수 있습니다. 다만 키움은 야간선물을 지원하지 않습니다(키움 Open API+ 공식 답변 2026-06-11 "현재 야간선물 상품 지원계획은 없습니다" — REST·OpenAPI+ 모두 불가). KRX 야간거래(18:00~익일 06:00) 자동매매가 필요하면 야간 전용 TR을 공식 제공하는 한국투자증권 KIS 기반으로 별도 제작합니다.

여러 증권사 계정을 동시에 돌릴 수 있나요?

키움 OpenAPI+ 특성상 1계정당 1개 프로그램 인스턴스만 실행 가능합니다. 여러 계정을 쓰시려면 계정별로 별도 PC 또는 VM을 준비하셔야 합니다. 견적 상담 시 구성을 함께 설계해드립니다.

조건검색식은 제가 직접 만들어야 하나요?

네, 조건검색식은 고객님이 HTS에서 직접 만드신 뒤 API가 그걸 호출하는 방식입니다. 조건 자체 설계가 어려우시면 상담 시 대안(이동평균·RSI·돌파 등 코드 레벨 구현)을 함께 검토해드립니다.

조건검색 자동매매가 새벽에 멈춰 있던 적이 있다던데요?

실시간 조건검색은 WebSocket 연결 위에서 돌아가는데, 서버가 보내는 PING에 응답하지 않으면 세션이 조용히 끊어집니다. 에러가 안 나서 프로그램은 정상으로 보이는데 편입 신호만 안 들어오는 상태가 됩니다. 알고랩이 제작하는 프로그램에는 PING 응답과 자동 재연결, 그리고 끊김을 텔레그램으로 알리는 감시를 기본으로 넣습니다.

제작 사례

지난 1년간 알고랩에서 제작한 키움 자동매매 주요 사례는 포트폴리오 페이지에서 보실 수 있습니다. 대표 사례: 주도주 스크리닝 + 트레이딩뷰 웹훅 연동 자동매매, 조건검색식 + 네이버 뉴스 필터 자동매매, LS증권·키움 복합 뉴스 감지 자동매매 등.

키움 REST API 기반 최근 사례도 있습니다 — 이동평균 골든/데드크로스 2종목 봇, PSAR+MACD 15분봉 단타 봇, 멀티슬롯 다중 PC 종목풀 동기화. OpenAPI+와 REST 중 무엇을 쓸지부터 정하시려면 → 키움 REST API vs OpenAPI+ 차이, 인증키 발급 화면은 → 키움 REST API 인증키 발급 가이드.

요구사항부터 바로 상담받아보세요

조건검색식, 지표 기준, 포지션 규모 등 아직 구체화되지 않아도 괜찮습니다.
알고랩이 24시간 빠르게 답변드리며, 가격·일정·구현 가능 여부를 바로 안내해드립니다.

무료 상담 시작하기 요금제 보기