선택한 시간봉의 봉이 마감되는 순간, 단기·장기 이동평균선의 크로스를 스스로 판단해 2종목을 자동매매하고 —
정규장을 넘어 대체거래소(NXT) 연장시간까지 놓치지 않고 싶다. 이 요청을 키움 신 REST API로 구현한 사례입니다.
플랫폼
키움 신 REST API (64bit · REST+WebSocket)
특징
SMA 크로스 + NXT 연장시간 자동 라우팅
유형
국내주식 · 2종목 동시
제작 기간
약 2~3주 (12~15영업일)
제작한 자동매매 프로그램 대시보드 — 2종목의 SMA 크로스·포지션·평가손익과 시간대별 거래소 라우팅 (예시 화면)
01배경 · 고객 요구사항
고객은 이동평균선 골든/데드크로스라는 검증된 규칙을 이미 가지고 있었습니다.
문제는 그 신호를 봉이 마감될 때마다 사람이 직접 차트를 보고 주문해야 했다는 것.
2종목을 동시에, 그것도 15분봉·30분봉처럼 자주 마감되는 봉을 사람이 계속 지켜보기는 현실적으로 어려웠습니다.
요청은 세 가지로 정리됐습니다. ① 선택한 시간봉의 봉이 마감된 시점을 기준으로 크로스를 자동 판단하고,
② 2종목을 각각 독립적으로 운용하며, ③ 정규장(09:00~15:30)뿐 아니라
대체거래소 넥스트레이드(NXT)의 연장시간(장 시작 전·마감 후)까지 활용하는 것.
특히 NXT 연장시간은 일반적인 자동매매 봇이 잘 다루지 않는 영역이라, 여기서 주문이 실제로 나가느냐가
이 프로젝트의 관건이었습니다. 정규장과 연장시간은 주문 방식·거래소 경로가 서로 달라,
"시간대에 따라 알아서 다른 방식으로 주문"하는 라우팅이 핵심 과제였습니다.
02구현 방식
전체 흐름은 봉마감 → 크로스 판단 → 주문 → 시간대별 라우팅으로 설계했습니다. 흐름은 이렇습니다:
봉마감 신호 판단 → 선택 시간봉(15분~4시간)의 봉이 완전히 마감된 뒤에만 이동평균을 계산해, 봉 중간의 가짜 신호(리페인팅)를 배제
단기(10)/장기(34) SMA 크로스 → 단기선이 장기선을 상향 돌파하면 매수, 하향 돌파하면 매도 판단
키움 신 REST API 주문 → 시간대에 맞는 거래소·주문 방식으로 전송하고, 체결은 실제 잔고로 확인
GUI 대시보드 → 2종목의 이동평균·이격도·포지션·평가손익과 현재 라우팅 상태를 실시간 표시
전략 흐름 — 봉마감 크로스 신호부터 5단계 우선순위 매도와 시간대별 주문 라우팅까지
시세는 REST 폴링과 실시간 WebSocket을 이중화했습니다. 봉마감 신호는 REST 조회로 충분하지만,
NXT 연장시간의 시세는 REST가 정규장 종가에 멈추는 구간이 있어 실시간 WebSocket이 유일한 시세 경로가 됩니다.
WebSocket이 끊기면 REST 폴백으로 매매를 이어가도록 안전장치를 뒀습니다.
구체적으로는 — 이격도는 이격도 = (단기 SMA ÷ 장기 SMA) × 100 으로 계산해 매도 단계 판단에 쓰고,
4시간봉은 60분봉을 일자 경계에 맞춰 합쳐(resample) 만들었습니다. 크로스·이격도·손절 파라미터는 모두
GUI에서 직접 수정할 수 있어, 개발자를 부르지 않고도 종목·기준값을 바꿔 운영할 수 있습니다.
03해결한 기술 난제
정규장 / NXT 시간대별 주문 자동 라우팅
같은 "매수"라도 정규장과 NXT 연장시간은 받아들이는 주문 방식이 다릅니다. 정규장은 SOR(최적경로) + 시장가로
즉시 체결을 노리지만, NXT 연장시간은 일반 시장가 주문이 거부되고 애프터마켓 구간에서는 지정가만 받습니다.
그래서 현재 시각을 기준으로 거래소 경로와 주문 방식을 자동 전환하도록 만들었습니다 —
연장시간에는 현재가 ±0.5%의 마켓터블 지정가(호가단위 반올림)로 보내 "시장가처럼 즉시 체결"되게 하면서도 체결가를 통제합니다.
시간대 자동 라우팅 — 정규장은 SOR·시장가, 연장시간은 NXT·마켓터블 지정가로 시각에 따라 주문 경로를 자동 선택. 사용자는 시간대를 신경 쓸 필요가 없습니다
NXT 연장 실시간 시세 확보 — 연장시간 시세가 REST에서 멈추는 문제를 실시간 WebSocket 전용 구독으로 해결해, 장 마감 후에도 정확한 현재가로 판단
미체결 자동 취소·재주문 — 지정가가 일정 시간(수 초) 안에 체결되지 않으면 취소하고, 체결 여유(버퍼)를 넓혀 재주문하는 로직으로 "연장시간에 안 걸리는 주문"을 방지
체결 기준 = 실제 잔고 — 주문을 보냈다고 보유로 간주하지 않고 증권사 잔고로만 체결을 확정해, 부분·미체결 상황에서도 수량이 어긋나지 않게 처리
토큰 자동 재발급 — 접근 토큰 만료·중복 발급을 감지해 스스로 재발급·재동기화, 무인 운영 중에도 인증이 끊기지 않도록 유지
04핵심 기능
단기(10)/장기(34) SMA 골든·데드크로스 자동 매수·매도 — 봉마감 기준 판단
5단계 우선순위 매도 — 손절 > 이격도(2단계) > 데드크로스 > 고점대비 순서로, 여러 조건이 동시 충족돼도 한 번만 실행
2종목 동시 운용 — 종목별로 투자금·포지션·기준값을 독립 관리
시간봉 선택 — 15분 / 30분 / 1시간 / 4시간봉을 GUI 드롭다운으로 선택
정규장 + NXT 연장시간 자동 라우팅 — 시각에 따라 거래소·주문 방식 자동 전환
GUI 대시보드 — 이동평균·이격도·포지션·평가손익·거래소 상태 실시간 표시
설정 저장·불러오기 & 일자별 로그 — 파라미터를 파일로 저장하고, 모든 신호·체결을 날짜별로 기록
05제작 과정 (약 2~3주)
1주차 · 요구사항·연동 설계 — 크로스/매도 규칙 확정, 키움 신 REST API 인증·주문·잔고·분봉 조회와 실시간 WebSocket 시세 뼈대 구축
2주차 · 핵심 로직·화면 — 봉마감 크로스·이격도 계산, 5단계 우선순위 매도, 시간대 자동 라우팅, 미체결 취소·재주문, GUI 대시보드 구현
3주차 · 배포·검증 — 클라우드 서버 배포, 토큰 재발급·재접속 안정성 점검, NXT 연장시간 주문을 소액 실계좌로 왕복 검증 후 인수인계
06납품 결과물
실행 프로그램 (GUI 대시보드 포함, .exe)
키움 신 REST API 연동 + 설정 파일 (종목·시간봉·기준값 GUI 편집)
일자별 신호·체결·오류 로그
사용설명서 + API 키 발급·서버 설정 가이드
납품 후 30일 무료 AS (협의 범위 내)
07기술 스택
키움 신 REST API (REST · 국내주식)실시간 WebSocket (0B 체결)NXT 넥스트레이드 라우팅Python 3.10 (64bit)PyQt5 GUIPyInstaller (.exe 배포)
※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률·수익금은 공개하지 않습니다.
알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천·투자 자문·수익 보장 서비스가 아닙니다.
과거 백테스트 결과가 미래 실거래 수익을 보장하지 않습니다. 해외선물·파생상품 투자는 원금 손실 위험이 있습니다.
이런 자동매매, 바로 견적 받아보세요
매매 규칙이 이미 있으셔도, 아직 아이디어 단계여도 괜찮습니다.
알고랩이 24시간 빠르게 답변드립니다.