AlgoLab Blog · 구매자·의사결정 × 키움증권 · 2026

키움 자동매매 프로그램 — 제작 전 확인 6가지

키움증권 · 제작 판단 2026-09-01 · 약 9분 읽기 · 알고랩 AlgoLab
한 줄 요약 키움 자동매매 프로그램을 지금 새로 만든다면 인터페이스는 키움 REST API가 기본값입니다. 키움증권 공식 안내 기준으로 Open API+는 Windows COM(OCX) 버전이고 개발언어 목록에 C/C++·C#·Visual Basic·Excel·Delphi가 적혀 있을 뿐 파이썬은 명시돼 있지 않습니다. 다만 REST로 정했다고 끝이 아닙니다 — 공식 안내에는 3개월 단위로 키움 REST API 미접속 시 매월 첫영업일에 자동으로 해지된다고 적혀 있고, 모의투자 서버로만 로그인한 경우에도 자동 해지될 수 있다고 안내합니다. 프로그램을 다 만든 뒤에 알면 늦는 조건입니다.

이 글은 코드를 쓰는 사람이 아니라 키움으로 자동매매 프로그램을 하나 갖고 싶은 사람을 위한 글입니다. 직접 만들든 제작을 맡기든, 시작하기 전에 정해 두지 않으면 나중에 되돌리기 비싼 항목 6개만 골랐습니다. 토큰 발급 방법이나 api-id 구조 같은 개발 스펙은 여기서 다루지 않고 키움 REST API 자동매매 가이드로 넘깁니다.

본문의 조건은 2026-09-01 기준 키움증권 공식 안내 페이지(키움 REST API 소개, 고객서비스의 Open API+ 안내)에 적혀 있는 문구를 대조한 것입니다. 증권사 정책은 공지로 예고 없이 바뀌므로 계약이나 개발 착수 전에 현재 안내 문구를 직접 확인하십시오.

이 글에서 다루는 것

  1. ① 인터페이스 — OpenAPI+와 REST, 공식 안내로 대조
  2. ② 자격 — 계좌·HTS ID·사용신청, 그리고 앱키
  3. ③ 유지 — 3개월 미접속이면 해지된다
  4. ④ 검증 — 모의투자로 확인되는 것과 안 되는 것
  5. ⑤ 범위 — 국내주식·미국주식, 그 밖은 다른 API
  6. ⑥ 명세 — 의뢰할 때 반드시 적어야 할 6줄
  7. 제작 전 체크리스트

① 인터페이스 — OpenAPI+와 REST, 공식 안내로 대조

키움에는 자동매매를 붙이는 창구가 두 개 있습니다. 오래된 키움 Open API+와 새로 열린 키움 REST API입니다. 인터넷에는 둘을 섞어 설명한 글이 많아서, 키움증권이 각 페이지에 실제로 적어 둔 문구만 옮겨 대조하겠습니다.

항목키움 Open API+키움 REST API
제공 형태Windows COM(OCX) 버전 모듈 설치HTTP 호출 — 설치 모듈 없음
운영체제Windows윈도우·맥·리눅스 등
개발언어(공식 표기)C/C++, C#, Visual Basic, Excel, Delphi, 기타파이썬·자바 등 다양한 언어
보조 도구KOA Studio (TR 목록·입력값 검증·실시간 DATA ID 확인)개발자 포털 문서와 예제
사용 조건당사 계좌 보유 + HTS ID 연결 후 서비스 사용등록당사 계좌 보유 + HTS ID 연결 후 사용신청
거래 상품국내 상품 중심국내 주식, 미국 주식
미사용 시공식 안내에 별도 표기 없음3개월 미접속 시 매월 첫영업일 자동 해지

표에서 가장 중요한 줄은 개발언어입니다. Open API+ 안내의 개발언어 목록에는 파이썬이 없습니다. 그런데 시중의 키움 자동매매 예제는 거의 전부 파이썬입니다. 모순처럼 보이지만 이유는 단순합니다 — 파이썬으로 OpenAPI+를 쓰는 것은 COM(OCX) 컨트롤을 파이썬에 얹는 우회 방식이라서, OCX가 32bit이면 파이썬도 32bit여야 하고 PyQt5 같은 GUI 라이브러리를 통해 이벤트를 받습니다.

실제로 OpenAPI+ 코드는 이렇게 생겼습니다. 화면(GUI) 객체가 없으면 이벤트가 도착하지 않습니다.

# 키움 Open API+ — COM(OCX)을 얹어 쓰는 구조 (개념 예시)
# 반드시 32bit 파이썬 + PyQt5 환경이어야 한다
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QApplication
import sys

app = QApplication(sys.argv)          # GUI 이벤트 루프가 없으면 콜백이 안 온다
ocx = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")   # OCX 컨트롤 등록
ocx.dynamicCall("CommConnect()")      # 로그인 창이 뜬다 — 사람이 눌러야 한다
# 이후 OnEventConnect / OnReceiveTrData 같은 콜백에 함수를 연결해서 데이터를 받는다

같은 일을 키움 REST API로 하면 설치도 GUI도 없고 HTTP 요청 하나입니다. 앱키와 시크릿으로 접근토큰(au10001)을 받고, 그 토큰을 헤더에 넣어 조회와 주문을 호출합니다.

# 키움 REST API — 접근토큰 발급 후 잔고 조회까지의 흐름 (개념 예시)
import requests

HOST = "https://api.kiwoom.com"

# 1) 접근토큰 발급 — au10001
tok = requests.post(f"{HOST}/oauth2/token", json={
    "grant_type": "client_credentials",
    "appkey":     APP_KEY,        # 소스에 박지 말고 환경변수로
    "secretkey":  APP_SECRET,
}).json()

headers = {
    "authorization": f"Bearer {tok['token']}",
    "api-id":        "kt00018",   # 계좌평가잔고내역요청
    "Content-Type":  "application/json;charset=UTF-8",
}
# 2) 잔고 조회 — 이 한 번이 '살아 있는 계정'이라는 접속 기록도 된다
r = requests.post(f"{HOST}/api/dostk/acnt", headers=headers, json={
    "qry_tp": "1", "dmst_stex_tp": "KRX",
})

그래서 결론은 무엇인가. 새로 만든다면 REST가 기본값입니다. 설치·비트·상주 PC 문제가 통째로 사라지고 클라우드 서버에 올려 24시간 돌릴 수 있기 때문입니다(VPS 24시간 운영). 다만 OpenAPI+의 공식 지원 종료 공지는 2026-09-01 확인 기준으로 없습니다. 이미 OpenAPI+로 잘 돌고 있는 프로그램을 이유 없이 옮길 필요는 없고, 옮긴다면 다음 큰 개편 때 함께 하는 편이 비용 대비 합리적입니다.

키움으로 자동매매를 만든다 이미 돌아가는 OpenAPI+ 코드가 있나? 없다면 새로 만드는 경우다 OpenAPI+ 유지 Windows 상주 PC · 32bit 파이썬 아니오 키움 REST API 맥·리눅스·클라우드 가능 3개월 미접속 자동 해지 대비가 됐나? 접속 유지 스케줄 + 해지 알림을 명세에 넣는다
인터페이스는 두 갈래지만, REST를 골라도 유지 조건이 하나 더 붙는다

② 자격 — 계좌·HTS ID·사용신청, 그리고 앱키

두 인터페이스 모두 키움증권 계좌를 보유하고 HTS ID를 연결한 고객이어야 쓸 수 있습니다. 거기에 사용신청이 한 단계 더 붙습니다. Open API+ 안내는 절차를 서비스 사용 신청 → 모듈 다운로드·설치 → OCX 탑재 프로그램 제작 → 모의환경 테스트의 4단계로 적고 있고, REST는 API 홈페이지 우측 상단의 API 사용신청 페이지에서 사용 등록 후 이용 가능하다고 안내합니다.

제작 의뢰에서 실제로 자주 막히는 지점이 여기입니다. 계좌 개설과 HTS ID 연결, 사용신청, 앱키·시크릿 발급은 본인 명의로 본인이 해야 하는 절차입니다. 제작자가 대신 해 줄 수 없습니다. 견적서에는 "API 연동"이라고 한 줄로 적혀 있어도 실제 착수는 이 발급이 끝나야 시작되므로, 발급을 언제까지 완료할지 일정에 먼저 박아 두십시오. 비개발자가 앱키 발급 단계에서 며칠씩 멈추는 경우가 실제로 흔합니다.

앱키(appkey)와 시크릿(secretkey)은 계좌에 주문을 낼 수 있는 자격 증명입니다. 비밀번호와 같은 급으로 다뤄야 합니다. 개발 단계에서는 모의투자 키로 진행하고, 실계좌 키는 납품 이후 본인이 직접 넣는 방식이 안전합니다. 자세한 보관 원칙은 API 키 보안에 정리했습니다.

③ 유지 — 3개월 미접속이면 해지된다

이 글에서 제일 중요한 항목입니다. 키움 REST API 안내에는 이렇게 적혀 있습니다.

키움증권 공식 안내 (2026-09-01 확인) "3개월 단위로 키움 REST API 미접속 시 매월 첫영업일에 자동으로 해지됩니다."
"모의투자 서버로만 로그인하신 경우 서비스가 자동 해지될 수 있습니다."

자동매매 프로그램을 가진 사람에게 이 두 줄이 뜻하는 바는 분명합니다. 전략을 잠시 쉬면 계정이 꺼진다는 것입니다. 시장이 마음에 안 들어 두어 달 봇을 세워 뒀다가 다시 켜면 전략이 틀린 게 아니라 인증부터 실패합니다. 검증 기간 내내 모의투자만 돌린 경우도 같은 위험이 있습니다.

대응은 어렵지 않지만 아무도 시키지 않으면 아무도 넣지 않는 기능입니다. 제작 명세에 접속 유지 스케줄과 해지 감지 알림을 한 줄 넣어 두면 됩니다.

# 접속 기록을 남기는 최소 호출 — 주 1회면 충분하다
# 실패하면 텔레그램으로 알린다. 조용히 죽는 것이 가장 나쁘다.
import datetime, requests

def keepalive():
    try:
        tok = issue_token()                       # au10001 접근토큰 발급
        bal = call(tok, api_id="kt00018",         # 계좌평가잔고내역요청
                   path="/api/dostk/acnt",
                   body={"qry_tp": "1", "dmst_stex_tp": "KRX"})
        if bal.get("return_code") != 0:
            notify(f"[키움] 접속 확인 실패 return_code={bal.get('return_code')} "
                   f"{bal.get('return_msg')}")
        else:
            log(f"{datetime.date.today()} 키움 REST API 접속 확인 OK")
    except Exception as e:
        notify(f"[키움] 접속 확인 중 예외 — 사용신청 상태를 확인하세요: {e}")

# 스케줄러에 등록: 매주 월요일 08:40 KST

알림 연결은 텔레그램 봇 모니터링에서 다룬 방식이면 충분합니다. 조건이 바뀔 수 있으니 정확한 기간과 판정 방식은 키움증권 공식 안내의 현재 문구로 대조하십시오. 여기서 하고 싶은 말은 숫자가 아니라 "자동매매 계정은 방치하면 꺼진다"는 사실을 제작 단계에서 알고 있으라는 것입니다.

④ 검증 — 모의투자로 확인되는 것과 안 되는 것

키움은 모의투자 환경을 제공합니다. OpenAPI+ 쪽은 KOA Studio에 모의투자 서버 접속 테스트 기능이 들어 있고, REST도 모의투자를 지원합니다. 문제는 모의투자로 무엇이 검증되는지를 오해하는 경우입니다.

모의투자로 확인되는 것모의투자로 확인되지 않는 것
주문이 규칙대로 나가는가 (kt10000 주식매수주문 등)실제 체결가 — 슬리피지
체결·미체결 조회가 맞물리는가 (kt00009·ka10075)호가 잔량이 얇은 종목의 부분체결
잔고 계산이 봇의 장부와 일치하는가 (kt00018)거래 비용을 반영한 실제 손익
장 시작·종료 시각 처리, 휴장일 스킵변동성 완화장치(VI) 발동 시의 실제 거동
네트워크 끊김·재접속 복구 로직모의투자 수익률 = 실계좌 수익률이라는 등식

한 줄로 정리하면 모의투자는 "로직이 맞는가"를 보는 곳이지 "돈이 되는가"를 보는 곳이 아닙니다. 모의투자에서 잘 나온 결과를 성과로 해석하면 안 됩니다. 실계좌로 넘어가기 전 단계 설계는 실전 투입 전 3단계 검증에 따로 정리했습니다.

그리고 ③번과 겹치는 함정이 여기 있습니다. 검증한다고 모의투자 서버로만 몇 달을 돌리면 공식 안내상 서비스가 자동 해지될 수 있습니다. 검증 기간에도 실서버 접속을 함께 유지하도록 스케줄을 짜는 편이 안전합니다.

⑤ 범위 — 국내주식·미국주식, 그 밖은 다른 API

키움 REST API 안내의 거래 가능 상품은 국내 주식과 미국 주식입니다. "키움은 국내주식만 된다"는 설명은 지금 기준으로는 낡은 정보이고, 미국주식까지 한 인터페이스로 다룰 수 있습니다(세부 지원 범위는 키움 미국·해외주식 API 지원 범위 참고).

반대로 범위 밖이 어디까지인지가 제작비를 가장 크게 흔듭니다.

견적을 받기 전에 이 범위부터 확정하십시오. "일단 주식으로 하고 나중에 코인도"는 가장 비싼 순서입니다. 나중에 붙일 계획이 있다면 처음부터 그렇게 설계하는 편이 총비용이 낮습니다.

⑥ 명세 — 의뢰할 때 반드시 적어야 할 6줄

제작을 맡길 때 같은 요구사항인데 견적이 두 배까지 벌어지는 이유는 대부분 아래 여섯 줄이 비어 있기 때문입니다. 그대로 복사해 채우면 됩니다.

[키움 자동매매 프로그램 — 명세 최소 6줄]

1. 인터페이스   : 키움 REST API  (또는 Open API+ 유지)
2. 실행 위치     : 클라우드 리눅스 서버 24시간 상주  (또는 내 윈도우 PC)
3. 사용 항목     : 조회 kt00018 잔고 / ka10075 미체결 / ka10004 호가
                  주문 kt10000 매수 · kt10001 매도 / 실시간 WebSocket 00·04
4. 운영 안전장치 : 주 1회 접속 유지 호출 + 해지·오류 시 텔레그램 알림
                  일일 손실 한도 도달 시 킬 스위치
5. 검증 기준     : 모의투자 4주간 주문·체결·잔고 불일치 0건이면 실계좌 전환
6. 인증 정보     : 개발은 모의 앱키로. 실계좌 앱키는 납품 후 본인이 직접 입력

3번 줄이 특히 중요합니다. 사용할 조회·주문 항목을 api-id 수준으로 적어 두면 "이것도 되나요"가 추가 작업인지 원래 범위인지가 명확해집니다. 이 목록을 어떻게 뽑는지는 자동매매 명세서 쓰는 법에 자세히 있습니다.

제작 전 체크리스트

2026-09-01 기준으로 키움증권 공식 안내 페이지(키움 REST API 소개 페이지, 고객서비스의 키움 Open API+ 안내 페이지)에 표기된 사용 조건·개발언어·운영체제·거래 상품·해지 규정 문구를 대조해 작성했습니다. 본문의 코드는 구조를 보여주기 위한 개념 예시이며 그대로 실전에 쓰라는 뜻이 아닙니다. 사용 조건·해지 규정·지원 범위·호출 한도는 증권사 공지로 예고 없이 바뀝니다. 계약이나 개발 착수 전에 키움증권 개발자 포털과 고객서비스 안내의 현재 문구로 반드시 대조하십시오. 알고랩은 투자자문업·투자일임업을 영위하지 않으며, 이 글은 자동매매 도구 제작에 관한 정보 제공일 뿐 수익이나 시장 방향을 예측하지 않고 투자 권유가 아닙니다.

키움 자동매매 프로그램, 명세부터 같이 정리해 드립니다

인터페이스 선택부터 사용할 조회·주문 항목, 접속 유지와 킬 스위치 같은 운영 안전장치까지 명세로 정리한 다음 실제로 돌아가는 프로그램으로 만들어 드립니다. 24시간 빠른 답변 가능합니다.

무료 상담 시작하기