해외주식 · 한국투자증권

트레이딩뷰 웹훅 → 한투 미국주식 다계좌 자동매매

TradingView 차트 전략은 손대지 않고 미국주식 실거래로 자동 연결하되, 여러 계좌를 각각 다른 규칙으로 독립 운용하고 싶다 — 이 요청을 한국투자증권 KIS Open API로 구현한 사례입니다. 웹훅 신호가 뜨는 즉시 3개 계좌가 각자 정해진 비율로 매매하고, 손절·장마감 청산까지 24시간 클라우드에서 자동으로 돌아갑니다.

한 줄 요약

TradingView Pine Script 전략은 그대로 두고, 알림 웹훅을 받는 서버가 한국투자증권 KIS Open API 해외주식 주문(미국 매수 TTTT1002U · 매도 TTTT1006U)으로 변환해 3개 계좌에 각각 다른 비율로 주문을 넣는 구조입니다. 미국 매수는 시장가가 없어 매도호가 + 틱 버퍼 지정가로 즉시 체결을 유도하고, 미체결이면 최신 호가로 자동 재주문합니다. 손절·장마감 청산까지 24시간 클라우드에서 무인 운영됩니다.

플랫폼
한투 KIS Open API(REST)
+ TradingView 웹훅
특징
3계좌 독립 + 웹 대시보드
+ 텔레그램 + 백테스트
유형
미국주식 자동매매
제작 기간
영업일 14~18일
(약 3~4주)
납품한 웹 대시보드 설정 화면 — KIS 연동 상태, 계좌별 매매 설정(매수 비율·고정 금액·손절 %·재진입·장마감 청산), 거래 세션 토글(정규장·프리마켓·애프터마켓)
납품한 웹 대시보드의 설정 화면. 계좌 3개가 각각 다른 비율·손절·세션으로 돌아갑니다 (계좌·값은 예시)

01배경 · 고객 요구사항

고객은 이미 TradingView에서 Pine Script로 미국주식 ETF 매매 전략을 만들어 차트에서 알림을 받고 있었습니다. 문제는 그 신호를 사람이 직접 보고 주문해야 했다는 것. 미국장은 우리 시간으로 밤~새벽에 열려, 신호가 떠도 잠들어 있으면 놓치기 일쑤였습니다.

요청은 명확했습니다. ① TradingView 전략은 그대로 두고, ② 신호가 뜨는 즉시 자동으로 실거래 주문이 나가고, ③ 별도 해외 브로커를 새로 트지 않고 국내 증권사(한국투자증권) 계좌로 운영하는 것. 여기에 더해 여러 계좌를 각각 다른 자금·비율로 독립 운용하고 싶다는 요구가 있었습니다.

실제로는 3개 계좌를 분리해, 계좌마다 예수금·매수 비율·손절 기준을 따로 두고 운용했습니다. 대상은 미국 ETF 몇 종목(예: TQQQ·SOXL 등)으로 한정한 화이트리스트 방식이라, "밤사이 신호가 떠도 사람이 대응하지 않아도 되는 완전 자동화"와 "계좌별 독립 운용" 두 가지가 이 프로젝트의 핵심이었습니다.

02구현 방식

TradingView 알림을 받아 실거래로 연결하는 웹훅(Webhook) 브릿지 구조로 설계했습니다. 흐름은 이렇습니다:

시스템 아키텍처 — TradingView 웹훅에서 수신 서버를 거쳐 한투 KIS 3계좌 독립 매매로, 자동 청산 룰과 웹 대시보드·텔레그램·백테스트로 분기
시스템 구성 — 웹훅 수신부터 3계좌 독립 실거래·청산 룰·모니터링까지
웹훅 수신 로그와 주문 처리 결과 표 — 미인증·세션 OFF 건너뜀·화이트리스트 거부·중복 폐기, 체결 완료·취소 후 재주문·재진입 차단
웹훅 로그 페이지. 시크릿 불일치·세션 OFF·중복 재전송이 어떻게 걸러지는지, 미체결이 어떻게 재주문되는지가 한 표에 남습니다

TradingView 쪽 전략은 한 줄도 고치지 않고, 알림 메시지 형식만 표준화해 그대로 재사용했습니다. 비전공자인 고객이 직접 입력하는 알림이라, 파서는 플레인 텍스트와 JSON 본문 양쪽을 모두 수용하도록 만들었습니다.

구체적으로는1 TQQQ 매수 같은 텍스트 또는 { "account":1, "ticker":"TQQQ", "side":"buy" } 형태의 JSON을 받아 ① 시크릿 토큰으로 위조 여부 검증 → ② 동일 신호 5초 내 재수신 폐기 → ③ 계좌·종목·방향으로 파싱해 해당 계좌 주문으로 변환하는 순서로 처리합니다. 계좌마다 인증과 주문 큐를 분리한 덕분에, 한 계좌에서 일어난 일이 다른 계좌에 영향을 주지 않습니다.

03해결한 기술 난제

웹훅 → 다계좌 라우팅 + 24시간 운영 안정성

하나의 웹훅 수신 서버가 신호를 계좌·종목·방향으로 파싱해 3개 계좌로 정확히 갈래를 나누고(다계좌 라우팅), 한 계좌 인증이 실패해도 나머지 계좌는 그대로 돌아가도록 격리했습니다. KIS 접근 토큰은 24시간이면 만료되므로 만료 전 선제 재발급하고, 해외주식 시세는 세션 충돌이 잦은 WebSocket 대신 REST 폴링으로 일원화해 장시간 무중단 운영의 안정성을 확보했습니다.

04
거래 히스토리 페이지 — 시간·계좌·종목·매수/매도·수량·체결가·사유(ALERT/STOPLOSS/MARKET_CLOSE)·주문번호
체결 내역. 사유 열에 신호 매매인지 손절인지 장마감 청산인지가 남습니다
핵심 기능

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

06납품 결과물

07기술 스택

한국투자증권 KIS Open API (REST · 미국주식) TradingView Webhook (Pine Script Alert) Python Flask (웹훅 수신 + 웹 대시보드) APScheduler (장마감 · 토큰 갱신) Telegram Bot API yfinance · matplotlib · reportlab (백테스트 · PDF) 리눅스 클라우드 (systemd · nginx · 24/7)

08실물 — 웹훅 페이로드와 KIS 주문 매핑

실제로 오가는 데이터가 어떻게 생겼는지가 이 구조에서 가장 궁금한 지점이라, 형식만 공개합니다 (계좌번호·키 값은 전부 플레이스홀더입니다).

① TradingView 알림 본문 — 비전공자도 직접 고칠 수 있도록 텍스트·JSON 양쪽을 받습니다.

// JSON 형태
{ "secret": "<사전 공유 토큰>",
  "account": 1,          // 1~3 : 어느 계좌로 보낼지
  "ticker":  "TQQQ",
  "side":    "buy" }

// 플레인 텍스트 형태 (같은 의미)
1 TQQQ 매수

② 수신 서버가 만드는 KIS 해외주식 주문 — 계좌별 설정에서 수량·틱 버퍼를 계산해 채웁니다.

POST /uapi/overseas-stock/v1/trading/order
tr_id: TTTT1002U            # 미국 매수 (매도는 TTTT1006U)
                            # 모의투자: 매수 VTTT1002U / 매도 VTTT1001U
{
  "CANO":            "<계좌 8자리>",
  "ACNT_PRDT_CD":    "<상품코드 2자리>",
  "OVRS_EXCG_CD":    "NASD",   // NASD · NYSE · AMEX
  "PDNO":            "TQQQ",
  "ORD_QTY":         "12",
  "OVRS_ORD_UNPR":   "78.42",  // 매도호가 + 틱 버퍼
  "ORD_SVR_DVSN_CD": "0",
  "ORD_DVSN":        "00"      // 00 지정가
}
미국 매수에는 "그냥 시장가"가 없다

한국투자증권 공개 예제 기준으로 미국 매수(TTTT1002U)의 ORD_DVSN00 지정가 · 32 LOO(장개시지정가) · 34 LOC(장마감지정가)뿐입니다. 매도(TTTT1006U)에만 31 MOO(장개시시장가) · 33 MOC(장마감시장가)가 추가로 있고, 모의투자 계좌는 양쪽 다 00 지정가만 가능합니다. 그래서 "신호 뜨면 시장가로 던진다"가 성립하지 않고, 공격적 지정가 + 재주문이 필요합니다. 이 코드값은 변경될 수 있으니 KIS Developers 포털의 현재 명세로 확인하십시오 (확인 시점 2026-08-16).

③ 계좌별 설정 — 계좌마다 자금·비율·손절이 독립입니다.

accounts:
  - id: 1
    cano: "<계좌 8자리>"
    buy_ratio: 0.30        # 예수금의 30%
    stop_loss_pct: -4.0
    tick_buffer: 0.02
    sessions: [regular]
  - id: 2
    cano: "<계좌 8자리>"
    buy_amount: 2000       # 고정 금액(USD)
    stop_loss_pct: -2.5
    tick_buffer: 0.03
    sessions: [pre, regular, after]

09자주 묻는 것

TradingView 웹훅으로 미국주식 자동매매가 실제로 되나요?

됩니다. 다만 두 가지가 반드시 붙어야 합니다 — 중복 방지(TradingView가 같은 알림을 재전송하는 경우가 있습니다)와 시크릿 검증(웹훅 주소는 공개 엔드포인트라 아무나 호출할 수 있습니다). 이 사례에서는 동일 신호 5초 내 재수신을 폐기하고 사전 공유 토큰으로 위조 호출을 차단했습니다. 웹훅 연동 자체의 원리는 트레이딩뷰 웹훅 자동매매 가이드에 정리돼 있습니다.

계좌를 여러 개 돌리면 뭐가 어려워지나요?

인증과 호출량이 계좌 수만큼 늘어납니다. 토큰 캐시를 계좌별로 분리해야 하고 (KIS access_token 재발급 규칙), 같은 시각에 나가는 호출이 배수가 되어 초당 거래건수 초과(EGW00201)에 먼저 닿습니다. 계좌번호 파라미터를 잘못 채워 나는 오류도 흔한데, 그건 CANO·ACNT_PRDT_CD 정리를 보시면 됩니다.

국내주식으로도 같은 구조가 되나요?

됩니다. 다만 국내는 장중에 개별 종목이 멈추는 구간이 있어 주문 게이트가 하나 더 필요합니다 — VI(변동성완화장치) 발동 구간에서는 시장가라도 즉시 체결되지 않기 때문입니다. 증권사 선택 자체를 고민 중이라면 증권사 API 비교부터 보시는 편이 빠릅니다.

10관련 사례 · 더 보기

이 사례에서 쓰인 KIS 해외주식 주문 API의 tr_id·거래소코드·ORD_DVSN 명세는 KIS API 미국주식 주문 — TTTT1002U와 ORD_DVSN에 따로 정리해 뒀습니다.

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

이런 자동매매, 바로 견적 받아보세요

TradingView 전략이 이미 있으셔도, 아직 아이디어 단계여도 괜찮습니다.
알고랩이 24시간 빠르게 답변드립니다.

무료 상담 시작하기 요금제 보기
← 제작 사례 전체 보기