파이썬으로 자동매매 만들기 · 2편

개발 환경 + 키움 REST API 키 발급 — 32비트도 GUI도 필요 없다

REST라서 평범한 파이썬이면 된다. 키움 REST API 키(appkey/secretkey) 발급과 모의/실전 도메인, 설정 파일 구조.

REST로 넘어오면서 제일 먼저 사라진 건 번거로운 제약이다. 예전 GUI 자동화 버전은 "영웅문이 32비트라 파이썬도 32비트여야 하고, 관리자 권한이 필요하고…" 같은 함정이 많았다. REST 버전은 그냥 평범한 파이썬이면 된다.

필요한 것

  • Python 3.10 이상 (32비트 아니어도 됨)
  • 키움증권 계좌 + 해외주식 거래 신청
  • 키움 REST API 사용 신청 (appkey/secretkey)
  • (선택) 텔레그램 봇 — 체결 알림용

핵심 REST 클라이언트는 파이썬 표준 라이브러리 urllib 만 쓴다. 즉 pip install 없이도 토큰 발급·주문이 된다. (GUI·그리드 같은 주변 기능엔 PyQt5, pandas_market_calendars 등이 들어가지만, API 호출 자체는 무의존이다.)

1) 키움 REST API 키 발급

  1. 키움 REST API 포털(openapi.kiwoom.com)에 접속해 로그인
  2. API 사용 신청 — 신청이 승인되면
  3. appkey와 secretkey 두 개를 발급받는다

이 두 값이 프로그램의 신분증이다. 절대 코드에 하드코딩하거나 깃허브에 올리지 말 것. 설정 파일로 분리하고 그 파일은 .gitignore 처리한다.

현실 체크: API 사용 신청은 증권사 정책에 따라 조건(계좌 개설·약관 동의 등)과 승인 시간이 다르다. 최신 조건은 포털 공지에서 확인하자. 그리고 키가 없으면 코드가 한 줄도 못 돈다 — 그래서 이 발급이 진짜 첫 관문이다. 승인이 오래 걸리면, 먼저 모의(mock)로 흐름만 익혀두면 된다.

2) 실전 vs 모의 — 도메인이 다르다

키움은 두 개의 서버를 준다.

REAL_BASE = "https://api.kiwoom.com"       # 실전 (실제 주문)
MOCK_BASE = "https://mockapi.kiwoom.com"   # 모의 (연습)

반드시 모의(mock)부터 시작하자. 코드가 실제로 주문을 넣기 전에, 모의 서버에서 토큰 발급·시세 조회·주문 흐름을 충분히 검증하는 게 정석이다.

3) 설정 파일 (settings.json)

인증정보와 옵션을 한 파일에 모은다.

{
  "kiwoom_rest": {
    "appkey": "발급받은 APPKEY",
    "secretkey": "발급받은 SECRETKEY",
    "mock": true,
    "min_interval_sec": 1.0,
    "exchange_map": { "QLD": "NY", "NVDA": "ND" }
  },
  "telegram": {
    "bot_token": "봇 토큰",
    "chat_id": "채팅 ID"
  }
}
  • mock: true — 처음엔 모의로. 검증 끝나면 false.
  • min_interval_sec — TR 호출 최소 간격(초). 키움은 초당 약 1회 제한이 있어 이걸로 간격을 지킨다(3편에서).
  • exchange_map — 종목이 어느 거래소인지(ND=나스닥, NY=NYSE, NA=아멕스). 미지정 시 자동 탐지도 되지만, 운영 종목은 명시하는 게 안전하다.

⚠️ settings.json은 인증정보를 담으므로 절대 커밋 금지. .gitignore에 추가하고, 저장소엔 값이 빈 settings.example.json만 올린다.

4) 폴더 구조 (권장)

myauto/
├── config/
│   ├── settings.example.json   ← 저장소에 올림(빈 값)
│   └── settings.json           ← 실제 값 (gitignore)
├── hero/
│   ├── kiwoom_rest.py          ← REST 클라이언트 (3~5편)
│   └── rest_controller.py      ← 도메인 래퍼
└── main.py

✅ 확인

config/settings.json을 만들고, 파이썬에서 값이 읽히는지부터 확인하자.

import json, pathlib
cfg = json.loads(pathlib.Path("config/settings.json").read_text("utf-8"))
print("appkey 앞 4자리:", cfg["kiwoom_rest"]["appkey"][:4], "…")
print("mock:", cfg["kiwoom_rest"]["mock"])

appkey 앞자리와 mock: True가 출력되면 준비 끝. (실제 토큰 발급은 3편에서.)

다음 편 예고

3편에서는 이 키로 토큰을 발급받고, 첫 TR 호출을 성공시킵니다. OAuth2 흐름, 토큰 캐싱, rate limit, 그리고 실전에서 겪은 "토큰이 갑자기 죽는" 함정(8005) 까지 — 여기가 REST 자동매매의 진짜 시작입니다.


질문은 아래 댓글로 남겨주세요. 키 발급 과정에서 막히는 부분도 편하게 물어봐 주세요.

핵심 주장 확인 자료 · 검토 기준 2026-08-27

아래 자료에서 본인에게 적용되는 최신 조건을 다시 확인하세요. 링크는 특정 상품 가입을 권하는 제휴 링크가 아닙니다.

이 글은 교육·정보 제공 목적이며 개인별 투자자문이나 특정 금융상품의 매수·매도 권유가 아닙니다.

함께 생각해요

이 글을 읽고 생긴 질문이나 직접 실행한 경험을 나눠주세요.

댓글을 불러오는 중입니다…