장중에 거래대금과 등락률 상위로 올라온 종목만 추리고, 그 종목이 고객이 쓰던 TradingView 조건에 맞으면 자동으로 매수하는 프로그램입니다.
키움증권 OpenAPI+로 만들었습니다. 종목을 고르는 일과 매수하는 일이 하나로 이어져 있어서 화면을 계속 들여다보지 않아도 됩니다.
플랫폼
키움증권 OpenAPI+ TradingView
언어
Python 3.10 32bit PyQt5, Flask
유형
국내주식 현물, 자동 스크리닝
제작 기간
약 3주
납품한 프로그램의 실행 화면. 왼쪽에 스크리닝과 손절, 포지션 설정이 있고 가운데에 주도주 후보와 웹훅 신호 상태가 나옵니다. 오른쪽은 웹훅을 받아 매수를 접수한 로그입니다. 종목과 수량은 예시입니다.
01배경과 요구사항
고객은 매일 장중 거래대금과 등락률 상위에 올라오는 주도주를 노리고 있었습니다.
그날 시장의 돈이 몰리는 종목이 크게 움직인다는 판단이었습니다. 그런데 그런 종목은 수시로 바뀝니다.
하루 종일 상위 종목을 훑으면서 진입 타이밍까지 맞추기는 어려웠습니다.
요청은 두 가지였습니다. 그날의 주도주 후보를 자동으로 추려 주는 스크리너가 하나.
그리고 그 후보가 이미 검증해 둔 TradingView 진입 조건에 맞는 순간 매수가 자동으로 나가는 것입니다.
무엇을 살지와 언제 살지를 둘 다 프로그램에 맡기려는 것이었습니다.
국내 주식은 장 시작 직후부터 상위 종목 순위가 빠르게 바뀝니다.
어떤 종목이 거래대금 상위로 올라오는 순간을 놓치면 급등이 이미 끝나 있는 경우도 많습니다.
그래서 상위 종목을 실시간으로 감시하는 속도와, 조건이 맞았을 때 주문이 나가는 속도가 모두 중요했습니다.
02구현 방식
종목을 고르는 스크리너와, TradingView 신호를 받아 주문으로 바꾸는 웹훅 서버를 한 프로그램 안에 넣었습니다.
키움 OpenAPI+로 거래대금 상위 30위 안이면서 등락률 +5% 이상인 종목을 실시간으로 추려 후보로 올립니다.
후보 종목은 TradingView 차트에서 세 조건을 봅니다. 볼린저밴드 상단 돌파, RSI 60 이상, MACD 골든크로스입니다.
세 조건이 모두 맞으면 TradingView가 종목과 조건 정보를 담은 웹훅을 보냅니다. 프로그램은 이 신호가 진짜인지 확인한 뒤 주문으로 바꿉니다.
키움에 시장가 매수를 넣고 체결을 확인합니다. 종목과 조건, 체결 결과는 텔레그램으로 바로 알립니다.
시스템 흐름. 주도주 스크리닝, 3조건 판정, 웹훅, 시장가 매수 순서입니다.
TradingView 조건식은 고객이 쓰던 것을 그대로 쓰고, 알림 메시지 형식만 맞췄습니다.
웹훅을 받는 서버는 고정 IP 없이 Cloudflare Quick Tunnel로 외부 접속용 주소를 자동으로 발급받습니다.
프로그램만 켜면 TradingView 신호를 받을 수 있습니다.
신호를 받으면 먼저 비밀 토큰으로 위조 여부를 확인합니다. 같은 신호가 다시 왔거나 너무 늦게 도착한 신호는 버립니다.
남은 신호만 시장가 매수로 바꿔 키움에 보냅니다.
종목을 고르는 규칙과 진입 조건이 따로 떨어져 있어서 한쪽을 바꿔도 다른 쪽은 그대로 동작합니다.
03어려웠던 부분
조건이 안 맞는데 주문이 나가는 일 막기
장중에는 상위 종목 순위가 초 단위로 바뀝니다. 그 와중에 스크리닝 결과와 매수 조건이 서로 어긋나지 않게 하는 일이 가장 어려웠습니다.
항상 지켜야 하는 규칙 18개를 코드에 넣고, 자동 테스트 140개를 빌드할 때마다 돌려 확인했습니다.
프로그램을 다시 켤 때마다 웹훅 주소가 바뀌는 문제도 있었는데, Quick Tunnel이 새로 발급한 주소를 프로그램이 알아서 잡도록 했습니다.
18개 규칙에는 조건이 충족되지 않으면 주문하지 않는다, 같은 종목을 두 번 사지 않는다, 장 마감 후에는 진입하지 않는다 같은 것이 들어 있습니다. 어떤 경로로 들어온 주문이든 이 규칙을 거칩니다.
140개 테스트는 스크리닝, 조건 판정, 주문 변환의 경계값을 확인합니다. 배포 전에 오작동을 걸러 내는 용도입니다.
같은 신호가 두 번 오면 무시합니다. 도착이 설정한 시간(수 초)보다 늦은 신호도 버려서, 늦은 신호로 잘못 진입하지 않습니다.
04주요 기능
15:15 일괄 청산이 끝난 상태. 보유가 비고 매매가 정지됩니다.
스크리너 화면에 거래대금과 등락률 상위 후보가 현재가와 함께 실시간으로 나옵니다.
볼린저밴드 상단 돌파, RSI 60 이상, MACD 골든크로스가 모두 맞을 때만 매수 신호를 받습니다.
신호가 오면 키움 OpenAPI+로 시장가 주문을 내고 체결을 확인합니다.
고정 IP 없이 Quick Tunnel로 웹훅 주소를 만들고, 주소가 바뀌면 다시 연결합니다.
후보 편입, 조건 충족, 매수 체결, 오류를 텔레그램으로 알립니다.
05제작 과정 (약 3주)
1주차에는 거래대금과 등락률 상위를 실시간으로 추리는 스크리너와 후보 화면을 만들고, 키움 OpenAPI+ 인증과 주문을 붙였습니다.
2주차에는 TradingView 쪽을 연결했습니다. 세 조건 판정, 웹훅 메시지 형식, Quick Tunnel 주소 발급, 시장가 매수 처리입니다.
3주차에는 18개 규칙과 140개 테스트를 갖추고 텔레그램 알림을 넣었습니다. 소액 실계좌에서 실제 체결을 확인한 뒤 넘겼습니다.
06납품 결과물
실행 프로그램 (주도주 스크리너 화면 포함)
TradingView 웹훅 수신 서버와 Quick Tunnel 설정
텔레그램 알림 봇 연동
사용설명서, 키움 OpenAPI+와 조건 설정 가이드
납품 후 30일 무료 AS (협의 범위 내)
07기술 스택
키움 OpenAPI+TradingView WebhookPython 3.10 32bitPyQt5FlaskCloudflare Quick TunnelTelegram Bot API
※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률과 수익금은 공개하지 않습니다.
알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다.
과거 백테스트 결과가 미래 실거래 수익을 보장하지 않습니다. 국내주식과 파생상품 투자는 원금 손실 위험이 있습니다.
쓰고 계신 TradingView 조건이 있다면
그 조건을 그대로 키움 주문에 연결할 수 있습니다.
어떤 종목을 어떤 조건에서 사고 싶은지 상담에서 들려주세요.