국내주식, 한국투자증권 KIS OpenAPI

한투 KIS 국내주식 5분봉 자동매매, 점수 선별과 손실 한도 자동 중지

"매일 제가 정한 로직대로 사고팔고, 하루 결과를 받아 보고 싶습니다." 의뢰인은 매수와 매도 규칙을 문서로 정리해 오셨고, 맥에서 돌아가야 한다는 조건이 있었습니다. 처음에는 키움을 생각하셨는데 키움 OpenAPI+는 Windows 전용이라, 운영체제를 가리지 않는 한투 KIS로 방향을 정했습니다. 만들면서 고친 것은 대부분 시세를 받아 오는 쪽에서 나왔습니다.

플랫폼
한국투자증권 KIS OpenAPI
(국내주식 REST)
구조
4단계 점수 선별
후보 5종목 감시
실행 환경
macOS, Windows
같은 소스로 실행
제작 기간
약 9일
한투 KIS 5분봉 자동매매 프로그램 대시보드. 위쪽에 매매 상태와 모드, 총 자산, 보유 종목 수, 코스피와 코스닥 등락률이 있고, 가운데에 최종 후보 5종목의 단계별 점수, 아래에 보유 종목의 매수 단계와 익절, 트레일링 상태가 표로 나온다
대시보드. 위가 상태와 계좌 요약, 가운데가 그 시각의 후보 5종목, 아래가 보유 종목 (모의투자 모드, 종목과 숫자는 예시값)

01하루의 흐름

단계내용
후보 선별5분마다 네 단계를 거쳐 후보를 5종목으로 줄입니다. 1차는 거래량과 거래대금, 체결강도. 2차는 평소 대비 거래량과 과열 여부, 업종 흐름. 3차는 5분봉 차트 상태. 4차는 재무 지표 점수
매수 금지 확인VI 발동 종목, 이미 보유했거나 주문이 진행 중인 종목, 직전 매수 후 일정 시간이 지나지 않은 종목은 건너뜁니다
진입후보가 눌렸다가 다시 오르는 조건을 모두 채우면 지정가로 1차 매수. 시장가는 쓰지 않고, 허용 폭보다 비싸게는 사지 않습니다
추가 매수오르는 쪽으로만 2차, 3차를 삽니다. 손실 중에는 더 사지 않습니다
매도손절을 가장 먼저 봅니다. 그다음이 단계별 익절이고 남은 수량은 트레일링으로 정리합니다. VWAP과 이동평균선 이탈은 5분봉이 닫힌 뒤에만 판정합니다
자동 중지일일 손실 한도, 연속 손절, 지수 급락 중 하나라도 걸리면 그날 신규 매수를 멈춥니다
장 마감 후매매 내역과 종목별 결과를 텔레그램으로 보내고 파일로 남깁니다. 체결과 오류는 생길 때마다 알립니다

4차의 재무 지표 점수는 종목을 거르는 데 씁니다. 거래가 몰려 1차부터 3차까지 통과했더라도 재무 상태가 기준에 못 미치는 종목을 후보에서 빼는 용도로 의뢰인이 설계했습니다. 배점과 통과 기준은 의뢰인의 것이어서 여기에는 싣지 않습니다.

봉이 진행 중일 때 조건을 보면 같은 봉 안에서 신호가 켜졌다 꺼졌다 합니다. 상담 단계에서 이 점을 말씀드렸고, 추세 이탈 판정은 봉 마감 기준으로 정했습니다.

02만들면서 고친 것들

전달하기 전에 장중에 직접 돌려 보며 나온 문제들입니다.

프로그램의 차트 탭. 5분봉 캔들 위에 VWAP, MA20, MA60 선이 그려져 있고 전일과 당일의 경계에 세로 점선이 있다
차트 탭. 이동평균선은 전일에서 이어지고 VWAP은 당일 경계에서 다시 시작합니다 (가격은 합성 데이터)

03왜 안 샀는지, 왜 멈췄는지

조건이 많은 전략을 돌리다 보면 오늘은 왜 한 번도 안 샀는지 궁금해지는 날이 옵니다. 그래서 매매 시그널 탭을 따로 뒀습니다. 후보 종목마다 매수 조건을 순서대로 검사하고, 처음 걸린 조건의 이름과 그때 값을 한 줄로 남깁니다. VWAP 아래였는지, 눌림 폭이 범위 밖이었는지, 이미 보유 중이었는지를 그 자리에서 확인할 수 있습니다.

매매 시그널 탭. 종목별로 매수가 차단된 조건의 이름과 상세 값이 시간순으로 쌓여 있고, 화면 위 상태 표시는 리스크 중지로 바뀌어 있다
매매 시그널 탭. 리스크 중지 상태에서는 모든 후보가 같은 사유로 막힙니다 (예시값)

자동 중지 조건은 이렇습니다. 일일 손실이 한도에 닿으면 신규 매수를 멈추고 보유 종목을 정리합니다. 손절이 연속으로 나오면 신규 매수만 멈춥니다. 코스피나 코스닥이 기준 이상 급락하면 신규 매수를 멈추고 보유 종목을 정리합니다. 한 번 멈추면 그날은 다시 켜지지 않고, 멈춘 사유는 화면 상단과 텔레그램에 표시됩니다.

같은 종목을 두 번 사는 사고는 여러 단계에서 막습니다. 주문이 진행 중인 종목, 미체결이 남은 종목, 이미 보유한 종목, 직전 매수 후 일정 시간이 지나지 않은 종목은 신규 주문 대상에서 빠집니다. 주문을 보낸 뒤 응답이 없으면 일정 시간 뒤 주문 상태를 직접 조회해 진행 중 표시를 정리합니다. 프로그램이 꺼졌다 켜져도 포지션 상태를 파일에서 복원하고 계좌 잔고와 맞춰 봅니다.

04납품물과 기술

한국투자증권 KIS OpenAPI (REST) Python 3.11 tkinter, matplotlib APScheduler Telegram Bot API PyInstaller

화면을 tkinter로 만든 이유는 파이썬에 기본으로 들어 있어 macOS와 Windows에서 추가 설치 없이 같은 코드가 돌기 때문입니다. 의뢰인의 원래 요청은 맥에서 도는 파이썬 스크립트였고, 화면과 Windows 실행 파일은 그 위에 얹은 것입니다.

05관련 사례

KIS API 키 발급이 처음이면 한국투자증권 KIS API 키 발급 30분 가이드부터 보시면 됩니다.

※ 본 사례는 고객 요구사항을 익명 처리하여 재구성한 것이며, 화면의 종목, 수량, 계좌는 예시값입니다. 수익률과 수익금은 공개하지 않습니다. 알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다.

정해 둔 매매 규칙이 있으시면

적어 두신 매수, 매도 규칙을 그대로 보내 주세요.
맥에서 쓰실 분도 말씀해 주시면 맞춰 드립니다.

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