보유한 미국주식을 프리마켓(미 동부시간 04:00~09:30) 급변동에서 사람 손 없이 자동으로 손절·익절하고 싶다 —
이 요청을 한국투자증권 KIS API로 구현한 사례입니다. 해외 브로커를 새로 트지 않고 국내 증권사 계좌 그대로 운영했습니다.
플랫폼
한국투자증권 KIS Developers (해외주식 REST)
특징
프리마켓 1초 폴링 손절·익절
유형
미국주식 리스크 관리
제작 기간
약 2~3주
제작한 손절·익절 봇 대시보드 — 보유 미국주식별 평단·현재가·손익과 손절/익절 라인, 프리마켓 상태 (예시 화면)
01배경 · 고객 요구사항
고객은 미국주식을 여러 종목 보유한 상태에서, 프리마켓에 갑자기 빠지거나 급등할 때
정해둔 선에서 자동으로 팔리게 하고 싶었습니다. 문제는 그 시간대가 사람이 지키기 어렵다는 것.
미국 프리마켓은 한국시간으로 저녁부터 심야에 걸쳐 열리고(서머타임 기준 17:00~22:30, 겨울에는 한 시간씩 밀림),
정규장은 그대로 새벽까지 이어집니다. 저녁 약속·잠자리에 든 시간에 급락이 나와도 매번 화면을 보고 대응할 수는 없습니다.
"자는 사이에 −10%가 나 있더라"를 막는 게 이 프로젝트의 출발점이었습니다.
요청은 명확했습니다. ① 보유 종목의 평단가를 기준으로 손절·익절 선을 잡고,
② 프리마켓 시간 동안만 자동으로 감시하다가 선에 닿으면 즉시 매도하고,
③ 해외 브로커를 새로 트지 않고 이미 쓰던 한국투자증권 계좌로 운영하는 것.
미국주식은 NASDAQ·NYSE·AMEX 상장 거래소가 종목마다 다르고 서브달러($1 미만) 종목까지 섞여 있어,
"종목마다 다른 조건을 알아서 처리"하는 게 숨은 난제였습니다.
02구현 방식
복잡한 실시간 스트리밍 대신, 잔고 조회 1초 폴링을 축으로 삼는 단순·견고한 구조로 설계했습니다.
KIS 해외주식 잔고 응답에는 현재가가 함께 실려오기 때문에, 잔고를 1초마다 조회하는 것만으로
가격 감시·보유 동기화·손익 표시를 한 번에 처리할 수 있었습니다. 흐름은 이렇습니다:
잔고 조회(1초) → 보유 종목·평단가·현재가를 받아오고, 새로 산 종목은 빈 슬롯에 자동 편입(평단가를 기준가로 세팅)
트리거 평가 → 평단가 기준 손절(우선) → 익절 순서로 조건 도달 여부를 판정
지정가 매도 → 트리거 도달 시 즉시 매도 지정가 주문 (KIS 해외주식은 시장가 미지원 → 지정가만)
거래소 자동 해결 → 잔고 조회 때 만들어 둔 종목→거래소 캐시에서 주문할 거래소 코드를 자동으로 꺼내 사용
동작 흐름 — 평단 기준 트리거 → 프리마켓 1초 폴링 → 지정가 매도, 그리고 종목→거래소 자동 매핑
구체적으로는 — 기준가(평단가)에서 손절·익절 각각 트리거 가격과 주문 가격을 계산합니다.
손절은 트리거 = 기준가 × (1 − 트리거%/100)로 잡고, 실제 주문 가격은 트리거보다 조금 더 낮게 걸어
프리마켓의 얇은 호가에서도 빠르게 체결되도록 했습니다(익절은 반대 방향 동일 패턴). 호가 단위도 $1 이상은 $0.01,
미만은 $0.0001로 자동 내림 처리해 서브달러 종목까지 그대로 커버합니다.
03해결한 기술 난제
프리마켓 시간대 · 거래소 매핑 처리
미국 프리마켓은 서머타임에 따라 한국시간 기준이 한 시간씩 밀리고, 같은 "미국주식"이라도
NASDAQ·NYSE·AMEX 중 어디에 상장됐느냐가 종목마다 다릅니다. KIS 해외주식은 잔고 조회와 매도 주문 모두
거래소 코드가 정확히 맞아야 체결되기 때문에, 이 두 가지를 사람이 신경 쓰지 않아도 되게 자동화하는 것이 핵심이었습니다.
프리마켓 시간은 서머타임을 반영해 자동 판별하고, 종목별 상장 거래소는 잔고를 조회하며 자동으로 파악·캐싱해 주문 때 꺼내 씁니다.
프리마켓 시간 자동 판별 — 서머타임(EDT/EST)을 반영해 프리마켓 구간을 판정하고, 그 시간 외에는 현재가만 갱신하고 주문은 실행하지 않아 정규장·애프터마켓 오발주를 원천 차단
종목→거래소 자동 매핑·캐싱 — 잔고를 NASD·NYSE·AMEX 순회 조회해 종목별 상장 거래소를 캐시에 저장하고, 매도 주문 시 캐시에서 자동 해결 (NYSE/AMEX 종목이 "해당 종목 정보가 없습니다"로 거부되던 문제 해소)
시간대 게이트 의존성 주입 — 프리마켓 판별을 갈아끼울 수 있는 함수로 분리해, 같은 코드베이스로 애프터마켓 전용 빌드까지 확장 가능하게 설계
이중 안전망 — 드라이런(모의) 기본값 + 프리마켓 시간 외 주문 차단이 항상 켜져 있어, 설정 실수나 시간대 착오로 인한 의도치 않은 실매도를 두 겹으로 방어
04핵심 기능
평단가 기준 자동 손절·익절 — 보유 평단을 기준가로 잡아 손절·익절의 트리거가·주문가 4개를 자동 계산하고 도달 시 매도
보유 종목 자동 슬롯 배치 — 매수만 하면 잔고 조회로 빈 슬롯에 자동 편입, 전량 매도되면 슬롯을 자동으로 비우고 기본값 복원 (최대 3슬롯)
지정가 자동 산출 · 호가단위 처리 — 손절 주문가를 트리거보다 낮게 잡아 빠른 체결, $1 이상·미만 호가단위($0.01/$0.0001) 자동 적용
GUI 대시보드 — 종목·평단·현재가·평가손익·슬롯별 계산가·상태(모니터링중/손절주문완료 등)를 실시간 표시, 다크/라이트 테마
거부 시 재시도 — 주문 거부 시 5초 후 1회 재주문, 반복 거부되면 슬롯 상태를 고정해 중복 주문 차단
설정·로그·토큰 관리 — App Key/Secret·계좌 입력 마법사, 일자별 롤링 로그, 접근 토큰 24시간 자동 갱신
05제작 과정 (약 2~3주)
1주차 · 요구사항·연동 설계 — 손절·익절 계산 규칙 확정, KIS 해외주식 인증·잔고·주문 연동 뼈대, 프리마켓 시간 판별(서머타임 포함) 구축
2주차 · 핵심 로직·화면 — 지정가 자동 산출, 거래소 자동 캐싱, 보유 종목 자동 슬롯 배치, tkinter 대시보드·테마 구현
3주차 · 검증·배포 — 서브달러·NYSE/AMEX 종목 포함 소액 실계좌 검증, 드라이런·시간 게이트 안전장치 점검, PyInstaller 패키징 + 한글 PDF 사용설명서 후 인수인계
06납품 결과물
실행 프로그램 (tkinter GUI 대시보드 포함 · Windows exe)
KIS 해외주식 연동 (잔고·매도 주문 + 종목→거래소 자동 매핑)
한글 PDF 사용설명서 + API·계좌 설정 가이드
설정·로그 폴더 (%APPDATA% 기반 · 일자별 롤링)
납품 후 30일 무료 AS (협의 범위 내)
07기술 스택
한국투자증권 KIS API (REST · 해외주식)Python 3.10+ (64bit)tkinter / ttk GUIREST 1초 폴링 (잔고 조회)PyInstaller (--onefile --windowed)reportlab (한글 PDF 매뉴얼)
※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률·수익금은 공개하지 않습니다.
알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천·투자 자문·수익 보장 서비스가 아닙니다.
과거 백테스트 결과가 미래 실거래 수익을 보장하지 않습니다. 미국주식·해외주식 투자는 환율 변동과 원금 손실 위험이 있습니다.
이런 자동매매, 바로 견적 받아보세요
이미 보유한 미국주식이 있으셔도, 아직 아이디어 단계여도 괜찮습니다.
알고랩이 24시간 빠르게 답변드립니다.