국내주식, 키움

키움 REST 이동평균 골든/데드크로스 2종목 자동매매 봇

선택한 시간봉이 마감될 때 단기와 장기 이동평균선의 크로스를 판단해 2종목을 자동매매하는 봇입니다. 정규장은 물론 대체거래소(NXT) 연장시간에도 주문이 나가야 한다는 요청이었고, 키움 신 REST API로 만들었습니다.

플랫폼
키움 신 REST API
(64bit, REST와 WebSocket)
특징
SMA 크로스,
NXT 연장시간 자동 라우팅
유형
국내주식, 2종목 동시
제작 기간
약 2~3주
(12~15영업일)
키움 REST 이동평균 크로스 자동매매 프로그램 실행 화면. 2종목 패널, 전략 파라미터(1시간봉, MA 10/34, 이격도, 손절), 시간대 자동전환 체크, 실시간 종목 현황 표, 봉마감 골든크로스에 SOR 시장가 매수, 16시 이후에는 NXT 지정가 매수가 찍힌 로그
납품한 프로그램의 실행 화면. 10:00 봉 마감 골든크로스는 SOR 시장가로, 오후 늦은 봉의 크로스는 NXT 지정가로 나간 것이 로그에 찍혀 있습니다 (종목과 수량은 예시)

01배경과 고객 요구사항

고객은 이동평균선 골든크로스와 데드크로스로 매매하는 규칙을 이미 갖고 있었습니다. 다만 봉이 마감될 때마다 직접 차트를 보고 주문해야 했습니다. 2종목을, 그것도 15분봉이나 30분봉처럼 자주 마감되는 봉을 계속 지켜보기는 어려웠습니다.

요청은 이랬습니다. 선택한 시간봉이 마감된 시점을 기준으로 크로스를 판단할 것, 2종목을 각각 따로 운용할 것. 그리고 정규장(09:00~15:30)에 더해 대체거래소 넥스트레이드(NXT)의 연장시간, 곧 장 시작 전과 마감 후에도 거래할 것.

NXT 연장시간은 자동매매 봇이 잘 다루지 않는 구간이라, 여기서 주문이 실제로 나가느냐가 관건이었습니다. 정규장과 연장시간은 주문 방식과 거래소 경로가 달라서, 시간대에 따라 주문 방식을 바꿔 보내는 처리가 필요했습니다.

02구현 방식

봉이 마감되면 크로스를 판단하고, 그 시각에 맞는 경로로 주문을 보냅니다.

전략 흐름도. 단기(10)/장기(34) SMA 골든크로스 매수, 5단계 우선순위 매도, 정규장은 SOR 시장가, NXT 연장시간은 마켓터블 지정가로 자동 라우팅
전략 흐름. 봉마감 크로스 신호부터 5단계 우선순위 매도, 시간대별 주문 라우팅까지

시세는 REST 조회와 실시간 WebSocket 두 가지로 받습니다. 봉마감 신호는 REST 조회로 충분합니다. 그런데 NXT 연장시간에는 REST 시세가 정규장 종가에 멈추는 구간이 있어서 실시간 WebSocket으로만 시세를 받을 수 있습니다. WebSocket이 끊기면 REST로 넘어가 매매를 이어갑니다.

이격도는 단기 SMA를 장기 SMA로 나눈 값에 100을 곱해 구하고, 매도 단계를 판단할 때 씁니다. 4시간봉은 60분봉을 날짜 경계에 맞춰 합쳐서 만들었습니다. 크로스, 이격도, 손절 기준값은 모두 화면에서 직접 고칠 수 있어서 종목이나 기준값을 바꿀 때 개발자를 부를 필요가 없습니다.

03어려웠던 부분

정규장과 NXT, 시간대별 주문 경로

같은 매수라도 정규장과 NXT 연장시간은 받아 주는 주문 방식이 다릅니다. 정규장은 SOR(최적경로) 시장가로 바로 체결을 노리지만, NXT 연장시간에는 일반 시장가 주문이 거부되고 애프터마켓 구간은 지정가만 받습니다. 그래서 현재 시각에 따라 거래소 경로와 주문 방식을 자동으로 바꾸게 했습니다. 연장시간에는 현재가 ±0.5%의 마켓터블 지정가(호가 단위 반올림)로 보냅니다. 시장가처럼 바로 체결되면서도 체결가가 그 범위를 벗어나지 않습니다.

04주요 기능

05제작 과정 (약 2~3주)

06납품 결과물

07기술 스택

키움 신 REST API (REST, 국내주식) 실시간 WebSocket (0B 체결) NXT 넥스트레이드 라우팅 Python 3.10 (64bit) PyQt5 GUI PyInstaller (.exe 배포)

08관련 사례

※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률과 수익금은 공개하지 않습니다. 알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다. 과거 백테스트 결과가 미래 실거래 수익을 보장하지 않습니다. 해외선물, 파생상품 투자는 원금 손실 위험이 있습니다.

쓰시는 매매 규칙이 있으시면

규칙을 말로 설명해 주시면 프로그램으로 옮길 수 있는지 봐 드립니다.
증권사와 종목 수, 거래하려는 시간대를 함께 알려 주세요.

무료 상담 시작하기 고객 후기 보기
← 제작 사례 전체 보기