미국주식 시세 TR
미국장은 우리 시간으로 밤 열 시 반에 열려서 새벽 다섯 시에 닫힙니다. 의뢰인은 "매매는 내가 할 테니, 내 종목에 무슨 일이 생기면 PC가 깨워 달라"고 했습니다. 그래서 이 프로그램에는 주문 기능이 없습니다. 보유종목 열 개까지 시세와 RSI, 수익률을 보고, 4시간마다 뉴스와 공시를 AI로 읽어 점수를 매깁니다. 조건이 맞으면 Windows 트레이 팝업과 소리로 알립니다. 2026년 9월에 납품했고, 이후 고객 피드백 두 건을 반영해 v1.2가 됐습니다.
| 유형 | 조건 | 비고 |
|---|---|---|
| 추가매수 | RSI(14, 5분봉) ≤ 30 | 기본 켜짐 |
| 추가매수(하락) | 전일 대비 ≤ −5% | 기본 꺼짐, 선택 |
| 익절 | 수익률 ≥ +10% | 매수단가는 직접 입력 |
| 손절 | 수익률 ≤ −5% | |
| AI 분석 | 4시간마다 뉴스와 공시를 읽어 점수 −100~+100, 영문 3줄 요약 | 새 소식 0건이면 호출 생략 |
같은 종목의 같은 유형은 30분 안에 다시 알리지 않습니다. 이 간격은 프로그램을 껐다 켜도 유지됩니다. 알림을 허용할 시간대도 정할 수 있습니다. 미국 정규장이 우리 새벽이라, 새벽 2시부터 5시까지는 소리를 끄는 식의 설정이 실제로 필요했습니다.
처음에는 정규장 밖에서 시세 조회를 아예 쉬게 했더니 고객이 "현재가가 안 보인다"고 물어보셨습니다. 그래서 화면 표시는 항상 갱신하고(장외에는 60초마다), 알림 판정만 시간대를 따르게 나눴습니다.
착수할 때 가장 큰 위험은 키움 REST의 미국주식 TR이 한글 가이드에 나오지 않는다는 점이었습니다. 국내주식의 이름 규칙에서 유추해 먼저 만들어 봤는데, 실제 키로 돌리자 전부 지원하지 않는 API라는 오류로 거부됐습니다.
답은 키움 공식 GitHub 저장소의 미국주식 샘플에 있었습니다. 아래는 실계좌 응답으로 확인한 값입니다.
| 용도 | api-id | endpoint | 메모 |
|---|---|---|---|
| 현재가 | usa20100 | /api/us/mrkcond | cur_prc에 부호 포함 |
| 분봉 | usa06011 | /api/us/chart | 최신부터 과거 순, 뒤집어야 함 |
| 일봉 | usa06012 | /api/us/chart | 시각 필드가 dt |
| 종목 리스트 | usa10099 | /api/us/stkinfo | 약 1.9만 종목, 거래소 포함 |
확인하지 못한 값들은 처음부터 한 곳에 모아 두었기 때문에, 실제 값을 확인한 뒤에는 파일 하나만 고치면 됐습니다. 착수 첫날 여섯 가지 API를 한꺼번에 호출해 보는 검증 스크립트를 먼저 만든 것도 도움이 됐습니다. 값은 바뀔 수 있으니 실제 개발 때는 공식 저장소로 다시 확인하셔야 합니다.
미국주식 TR은 종목의 거래소 구분(ND 나스닥, NY 뉴욕, NA 아멕스)이 정확해야 조회됩니다. 틀리면 조회 내역이 없다는 오류가 납니다. 그래서 종목 리스트에서 티커별 거래소를 받아 하루 동안 저장해 두고, 거기 없는 종목은 나스닥, 뉴욕, 아멕스 순으로 시도해서 성공한 값을 기억합니다. 셋 다 실패하면 오류 코드를 그대로 내보내지 않고, 티커를 확인하라는 안내 문구로 바꿔 보여 줍니다. 한투 프리마켓 손절 봇에서도 같은 종류의 문제를 겪었습니다.
수용 테스트 15건이 모두 통과한 상태에서 보안과 안정성만 따로 한 번 더 봤습니다. 오류가 났을 때, 여러 작업이 동시에 돌 때, 강제로 종료됐을 때를 살펴보니 네 건이 나왔습니다.
"9"처럼 깨져 있으면 실행은 되는데 첫 알림에서 프로그램이 죽었습니다. 값을 읽지 못하면 알림을 허용하는 쪽으로 처리했습니다.
키움 REST가 처음이면 키움 REST API 자동매매 가이드와 앱키 발급 가이드부터 보시면 됩니다.
주문 없이 알림만 원하시면 그렇게 말씀해 주세요. 범위가 줄면 기간도 줄어듭니다.
어떤 종목을 어떤 조건으로 보고 싶은지 알려 주시면 됩니다.