Overview
왜 KIS API를 추가로 배우는가
W8에서 Alpaca Paper Trading으로 미국 주식을 자동매매했습니다. 하지만 한국 수강생에게는 국내 주식 경험이 더 친근하고 실전적입니다. 삼성전자, SK하이닉스, 네이버, 카카오 같은 종목을 직접 자동매매해야 진정한 "내 시장"이 됩니다.
💡 Alpaca vs KIS 비교:
• Alpaca: 미국 주식 전용, 이메일만으로 가입, 단순한 API, 즉시 시작
• KIS: 국내+해외 주식, 실계좌 연동 필요, 해시키 등 복잡, 한국 종목 지원
W8까지 Alpaca로 기본기 익힌 수강생이 KIS로 실전 한국 시장까지 확장하는 구조입니다.
🚨 시작 전 필수 숙지
KIS Developers는 실계좌와 모의계좌를 같은 API로 다룹니다. URL과 TR_ID의 단 한 글자(T vs V)로 구분됩니다. 실수하면 실제 돈이 나갑니다. 이번 세션은 절대적으로 모의계좌만 사용하며, 실계좌 전환은 수료 후 각자의 판단에 따릅니다.
SP 1
OAuth + 인증
SP 2
시세 + 잔고
SP 3
자동매매 + Claude
학습 목표
1
한국투자증권 모의투자 계좌 개설 + KIS Developers 서비스 신청을 완료할 수 있다
2
AppKey + AppSecret + 계좌번호 3종 세트를 발급받아 안전하게 n8n Credentials에 저장할 수 있다
3
Access Token 24시간 유효 발급 + n8n에서 자동 재발급 워크플로를 구축할 수 있다
Step 1 · 20min
1단계 — 모의투자 계좌 개설
한국투자증권 앱 가입 (이미 계좌 있으면 스킵)
- 한국투자증권 앱 설치 또는
securities.koreainvestment.com 접속
- 비대면 계좌개설 → 신분증 + 본인인증 (미성년자는 부모 동반)
- 계좌 개설 후 로그인 → HTS ID(영문) 설정 — 나중에 API에서 사용
- 입금 불필요. 모의투자는 별도 가상자본 지급
모의투자 신청 (가상 5천만원 지급)
- 홈페이지 상단 트레이딩 → 모의투자 메뉴 진입
- 주식 모의투자 대회 신청 — 상시 신청 가능
- 신청 완료 후 모의투자 계좌번호 자동 발급 (실계좌와 별개)
- 계좌번호 형식 예:
50123456-01 — 앞 8자리 + 뒤 2자리
- 계좌번호 메모장에 안전하게 저장
💡 모의투자 특징: 가상 5천만원 자동 지급, 실제 시세 기반 주문 체결, 매월 1일 자본 리셋. 주식 종목은 KOSPI + KOSDAQ 전 종목 주문 가능. 단, ETF 일부 · 파생상품은 제한될 수 있으니 주의.
Step 2 · 15min
2단계 — KIS Developers API 서비스 신청
KIS Developers 서비스 신청 (5분)
apiportal.koreainvestment.com 접속 → 우측 상단 로그인
- KIS Developers 서비스 신청하기 클릭
- 모의투자 계좌 선택 → 아까 발급받은 모의계좌 번호 입력
- 간편인증 · 휴대폰 인증 완료 → 신청
- 승인 즉시 AppKey (36자리) + AppSecret (180자리) 화면에 표시
- ⚠️ AppSecret은 단 한 번만 표시! 즉시 복사해 안전한 곳에 저장
🔐 앱키·시크릿 보관 원칙
• 절대 GitHub에 커밋하지 않기 — .env 파일 + .gitignore 필수
• AppSecret 유출 시 즉시 KIS Developers에서 재발급 (기존 키 자동 만료)
• n8n Credentials에 저장할 때 실전/모의 구분 명확히 (이름에 "paper" 포함)
• 절대로 채팅·메신저·이메일로 앱키 전송 금지
n8n Credentials에 저장
🔑
n8n Credentials — KIS Paper
SECURE
Generic Credential Type으로 저장. n8n 변수 시스템에서 호출할 수 있게 일관된 이름 사용.
Credential Name: kis_paper_credentials
APP_KEY: 36자리 문자열
APP_SECRET: 180자리 문자열
CANO: 계좌 앞 8자리 (50123456)
ACNT_PRDT_CD: 계좌 뒤 2자리 (01)
HTS_ID: 가입 시 설정한 영문 ID
Step 3 · 25min
3단계 — Access Token 발급 + 자동 재발급 워크플로
KIS API 호출 시마다 Access Token을 헤더에 실어야 합니다. 토큰은 24시간 유효하며, 하루에 최대 1회만 발급 가능(과도 발급 시 이용 제한). 따라서 토큰을 저장·재사용하는 워크플로가 필수입니다.
Base URL 구분 — 실수 금지
📗 모의투자 (우리가 사용할 URL)
https://openapivts.koreainvestment.com:29443
⚠️ 실전투자 (절대 건드리지 말 것)
https://openapi.koreainvestment.com:9443
토큰 발급 API 호출
🎫
HTTP Request — Access Token 발급
AUTH
모의투자 URL에 POST. 앱키·시크릿을 Body에 전송.
Method: POST
URL: https://openapivts.koreainvestment.com:29443/oauth2/tokenP
Content-Type: application/json
Body Mode: JSON (아래)
// Request Body
{
"grant_type": "client_credentials",
"appkey": "{{ $credentials.APP_KEY }}",
"appsecret": "{{ $credentials.APP_SECRET }}"
}
// Response (성공)
{
"access_token": "eyJ0eXAiOiJKV1QiLCJh...",
"token_type": "Bearer",
"expires_in": 86400,
"access_token_token_expired": "2026-04-23 08:30:00"
}
토큰 자동 재발급 워크플로
24시간마다 새 토큰을 발급받아 n8n 워크플로 변수 또는 Google Sheets에 저장하면 다른 워크플로에서 재사용 가능합니다.
🔧 KIS 토큰 관리 워크플로 (별도 생성)
Schedule→매일 오전 6시 30분 (장전 여유있게)
HTTP: Token 발급→KIS /oauth2/tokenP 호출
Code: 유효시간 계산→expires_in + 안전마진 -5분
Sheets: 토큰 저장→kis_tokens 탭에 token·expiry·timestamp 기록
Discord 알림 (옵션)→"토큰 재발급 완료, 유효기한 ~4/23 06:30"
토큰 조회 함수 — 다른 워크플로에서 재사용
// 다른 워크플로에서 토큰이 필요할 때
// Sheets "kis_tokens" 탭에서 최신 1행 조회 후 사용
const tokenRow = $('Sheets Get Latest Token').item.json;
const token = tokenRow.access_token;
const expiry = new Date(tokenRow.expiry);
const now = new Date();
// 만료 체크 (안전마진 5분)
const minutesLeft = (expiry - now) / 60000;
if (minutesLeft < 5) {
throw new Error('KIS 토큰 만료 임박 — 재발급 워크플로 수동 실행 필요');
}
return {
authorization: `Bearer ${token}`,
valid_for_minutes: Math.round(minutesLeft)
};
🚨 SP1 자주 발생하는 오류
토큰 발급이 "EGW00133" 오류
앱키·시크릿 오타 또는 KIS Developers 신청 승인 대기 중. 포털에서 승인 상태 확인. 승인 직후 1~2분 기다렸다 재시도.
하루에 토큰을 여러 번 발급하다 차단됨
KIS는 과도한 토큰 발급을 제한. 토큰 재사용 필수. Sheets 저장 방식이 안전. 차단 시 몇 시간 후 자동 해제되나 반복되면 장기 제한될 수 있음.
Body를 JSON이 아닌 form-data로 보내 실패
KIS는 엄격히 Content-Type: application/json + JSON body 요구. n8n HTTP Request의 Body Content Type을 "JSON"으로 명시. Send Body 옵션 체크.
SP1 완료 체크리스트
✅ 아래 모두 체크되면 SP1 완료
한국투자증권 실계좌 개설 완료
모의투자 계좌 개설 완료 (가상 5천만원 지급 확인)
KIS Developers 서비스 신청 → AppKey/AppSecret 발급
n8n Credentials에 kis_paper 자격증명 저장 (APP_KEY, APP_SECRET, CANO, ACNT_PRDT_CD, HTS_ID)
토큰 발급 API 호출 성공 → access_token 획득
Sheets "kis_tokens" 탭 생성 + 토큰 자동 재발급 스케줄 워크플로 가동
학습 목표
1
TR_ID 체계를 이해하고 실전/모의의 T/V 접두어 규칙을 구분할 수 있다
2
삼성전자(005930) 현재가 + 60일 일봉 차트를 조회하는 n8n 워크플로를 구축할 수 있다
3
계좌 잔고·보유종목·평가손익을 조회해 Google Sheets에 자동 기록할 수 있다
Step 1 · 15min
1단계 — KIS TR_ID 체계 이해
KIS API는 TR_ID(Transaction ID)로 각 기능을 구분합니다. Alpaca처럼 URL 하나로 모든 걸 하지 않고, 헤더의 TR_ID 값이 실제 동작을 결정합니다. 같은 URL이라도 TR_ID가 다르면 매수/매도/조회가 달라집니다.
TR_ID 명명 규칙
📐 TR_ID 첫 글자:
• T: 실전투자 (T로 시작) — 예: TTTC0802U
• V: 모의투자 (V로 시작) — 예: VTTC0802U
• FH: 시세조회 (실전·모의 공통) — 예: FHKST01010100
한 글자 차이로 실전/모의가 구분되므로 매우 주의. 모의투자에서 T로 시작하는 TR_ID 쓰면 403 오류.
이 과정에서 사용할 핵심 TR_ID 9개
📊 주식 현재가
실시간 시세 조회 — 실전/모의 공통
FHKST01010100
📈 일자별 시세 (일봉)
최근 30~100일 OHLC — 실전/모의 공통
FHKST01010400
📉 기간별 시세 (일/주/월/년)
커스텀 기간 OHLC — 실전/모의 공통
FHKST03010100
💼 계좌 잔고 조회
보유 종목 리스트 + 평가손익
VTTC8434R
🟢 현금 매수
모의 매수 주문 (SP3에서 사용)
VTTC0802U
🔴 현금 매도
모의 매도 주문 (SP3에서 사용)
VTTC0801U
📋 일별 주문 체결 조회
당일/과거 주문 내역
VTTC8001R
Step 2 · 20min
2단계 — 삼성전자 현재가 조회
💹
HTTP Request — 주식 현재가
QUOTE
GET 방식 + 쿼리 파라미터로 종목코드 전달. 헤더에 token·appkey·TR_ID 필수.
Method: GET
URL: https://openapivts.koreainvestment.com:29443/uapi/domestic-stock/v1/quotations/inquire-price
Query FID_COND_MRKT_DIV_CODE: J (주식)
Query FID_INPUT_ISCD: 005930 (삼성전자)
필수 헤더 5개
// KIS 시세 조회 헤더 (모든 조회 API 공통)
{
"content-type": "application/json",
"authorization": "Bearer {{ $json.access_token }}",
"appkey": "{{ $credentials.APP_KEY }}",
"appsecret": "{{ $credentials.APP_SECRET }}",
"tr_id": "FHKST01010100"
}
응답 파싱 — 핵심 필드
// 응답 예시 (삼성전자 005930)
{
"rt_cd": "0", // 0 = 성공
"msg_cd": "MCA00000",
"msg1": "정상처리 되었습니다",
"output": {
"stck_prpr": "72400", // 현재가
"prdy_vrss": "-800", // 전일 대비
"prdy_ctrt": "-1.09", // 전일 대비율 (%)
"stck_oprc": "73000", // 시가
"stck_hgpr": "73200", // 고가
"stck_lwpr": "72200", // 저가
"acml_vol": "8724563", // 누적 거래량
"per": "15.23", // PER
"pbr": "1.45" // PBR
}
}
📌 필드명이 암호 같은 이유: KIS API는 한글 약어를 영문으로 표기.
• stck_prpr = "주식 현재가" (STocK PResent PRice)
• prdy_vrss = "전일 대비" (PReviouS DaY VeRSuS)
• acml_vol = "누적 거래량" (ACcuMuLated VOLume)
처음엔 낯설지만 한 번 익히면 직관적. KIS API 문서 페이지에 전체 필드 한글 설명 있음.
Step 3 · 25min
3단계 — 일자별 시세 + 계좌 잔고
일자별 시세 (60일 OHLC)
W2에서 Yahoo Finance로 미국 주식 OHLC를 가져왔습니다. 한국 주식은 KIS의 FHKST01010400을 씁니다.
📈
HTTP Request — 일봉 60일
CHART
URL Path: /uapi/domestic-stock/v1/quotations/inquire-daily-price
tr_id: FHKST01010400
FID_COND_MRKT_DIV_CODE: J
FID_INPUT_ISCD: 005930
FID_PERIOD_DIV_CODE: D (일봉)
FID_ORG_ADJ_PRC: 1 (수정주가)
W2 지표 계산 연결 — 한국 종목 대응
// KIS 일봉 응답 → W2 RSI·MA·볼린저 계산 어댑터
const kisData = $input.item.json.output;
// output은 최근부터 과거 순 - 역순으로 변환
const closes = [];
for (let i = kisData.length - 1; i >= 0; i--) {
closes.push(parseFloat(kisData[i].stck_clpr)); // 종가
}
const symbol = '005930.KS';
const currentPrice = closes[closes.length - 1];
// W2의 calcRSI, calcMA, calcBB 재사용 (코드 생략)
// ...
return {
ticker: symbol,
ticker_name: '삼성전자',
price: currentPrice,
rsi14: rsi14.toFixed(2),
ma20: ma20.toFixed(2),
bb_upper: bb.upper.toFixed(2),
bb_lower: bb.lower.toFixed(2),
market: 'KOSPI'
};
계좌 잔고 조회
💼
HTTP Request — 계좌 잔고
ACCOUNT
URL Path: /uapi/domestic-stock/v1/trading/inquire-balance
tr_id: VTTC8434R
CANO: 계좌 앞 8자리
ACNT_PRDT_CD: 계좌 뒤 2자리
AFHR_FLPR_YN: N
INQR_DVSN: 01
UNPR_DVSN: 01
FUND_STTL_ICLD_YN: N
FNCG_AMT_AUTO_RDPT_YN: N
PRCS_DVSN: 01
CTX_AREA_FK100: (공란)
CTX_AREA_NK100: (공란)
// 잔고 조회 응답 구조
{
"rt_cd": "0",
"output1": [ // 보유 종목 리스트
{
"pdno": "005930", // 종목코드
"prdt_name": "삼성전자", // 종목명
"hldg_qty": "10", // 보유 수량
"pchs_avg_pric": "71500", // 매입평균가
"prpr": "72400", // 현재가
"evlu_amt": "724000", // 평가금액
"evlu_pfls_amt": "9000", // 평가손익
"evlu_pfls_rt": "1.26" // 평가손익률 %
}
],
"output2": [ // 계좌 요약
{
"dnca_tot_amt": "49276000", // 예수금 총액
"tot_evlu_amt": "50000000", // 총 평가금액
"asst_icdc_amt": "0", // 자산증감액
"asst_icdc_erng_rt": "0" // 자산증감수익률
}
]
}
SP2 완료 체크리스트
✅ 아래 모두 체크되면 SP2 완료
TR_ID 체계 이해 (실전 T / 모의 V / 시세 FH)
삼성전자 현재가 조회 성공 + rt_cd=0 수신
일자별 60일 OHLC 조회 성공
W2 Code 노드 연결 → 한국 종목 RSI·MA·볼린저 계산 검증
계좌 잔고 조회 성공 + 가상 5천만원 확인
잔고 결과를 Sheets "kis_balance" 탭에 자동 기록
학습 목표
1
해시키(HashKey) 생성 매커니즘을 이해하고 n8n에서 자동 생성해 주문 API에 첨부할 수 있다
2
Claude verdict → 모의 매수/매도 주문 실제 체결로 이어지는 완전한 자동매매 워크플로를 완성할 수 있다
3
2단계 승인 시스템(Discord 버튼·텔레그램)으로 자동 주문 전 인간 검토 단계를 구현할 수 있다
Step 1 · 20min
1단계 — 해시키(HashKey) 이해와 생성
KIS의 주문 관련 API(매수/매도/정정/취소)는 Body 변조 방지를 위해 HashKey를 요구합니다. Body를 KIS 서버에 먼저 보내 해시를 발급받고, 그 해시를 실제 주문 요청의 헤더에 추가하는 2단계 구조입니다.
1
주문 Body JSON을 먼저 HashKey 엔드포인트에 POST
POST /uapi/hashkey
2
응답에서 HASH 필드 추출 (40자리 문자열)
3
실제 주문 요청 헤더에 hashkey: {HASH} 추가해서 전송
4
KIS 서버가 Body와 HASH 일치 검증 후 주문 처리
해시키 생성 노드
🔐
HTTP Request — HashKey 생성
HASH
주문 실행 직전에 호출. Body는 실제 주문과
완전히 동일해야 함.
Method: POST
URL Path: /uapi/hashkey
Headers: content-type, appkey, appsecret
Body: 실제 주문 Body (아래 참조)
// HashKey 생성 Body (실제 주문과 동일)
{
"CANO": "{{ $credentials.CANO }}",
"ACNT_PRDT_CD": "{{ $credentials.ACNT_PRDT_CD }}",
"PDNO": "005930",
"ORD_DVSN": "00",
"ORD_QTY": "10",
"ORD_UNPR": "72400"
}
// Response
{
"HASH": "1f9b2d4e8a...", // 40자리 해시
"BODY": { ... }
}
⚠️ HashKey 주의사항:
1. Body 한 글자라도 다르면 HASH 불일치 → 주문 거부
2. HashKey 생성 직후 바로 주문 실행 (수분 이상 지연 시 무효화 가능성)
3. JSON 필드 순서도 영향 줄 수 있음 — 해시 생성과 실제 주문 완전 동일한 Body
Step 2 · 20min
2단계 — 매수/매도 주문 실행
매수 주문 API
🟢
HTTP Request — 현금 매수
BUY
Method: POST
URL Path: /uapi/domestic-stock/v1/trading/order-cash
tr_id: VTTC0802U (모의 매수)
hashkey: {{ 1단계 HASH }}
authorization: Bearer {{ access_token }}
주문 Body 파라미터
// 삼성전자 10주 시장가 매수
{
"CANO": "{{ $credentials.CANO }}",
"ACNT_PRDT_CD": "{{ $credentials.ACNT_PRDT_CD }}",
"PDNO": "005930", // 종목코드
"ORD_DVSN": "01", // 주문구분: 01=시장가, 00=지정가
"ORD_QTY": "10", // 주문 수량
"ORD_UNPR": "0" // 시장가는 0, 지정가는 가격
}
// 지정가 매수 (72,000원에 10주)
{
"CANO": "...",
"ACNT_PRDT_CD": "01",
"PDNO": "005930",
"ORD_DVSN": "00", // 지정가
"ORD_QTY": "10",
"ORD_UNPR": "72000"
}
매도는 TR_ID만 변경
매도 주문은 TR_ID만 VTTC0801U로 바꾸면 됩니다. Body 구조·파라미터는 매수와 완전히 동일. n8n에서는 IF 노드로 side에 따라 TR_ID를 분기합니다.
// IF 노드에서 매수/매도 분기 후 Set 노드
const side = $input.item.json.side;
return {
tr_id: side === 'buy' ? 'VTTC0802U' : 'VTTC0801U',
action: side === 'buy' ? '매수' : '매도'
};
성공 응답 확인
{
"rt_cd": "0",
"msg_cd": "APBK0013",
"msg1": "주문 전송 완료 되었습니다.",
"output": {
"KRX_FWDG_ORD_ORGNO": "00950", // 거래소 전송 기관번호
"ODNO": "0000117057", // 주문번호 (정정/취소에 사용)
"ORD_TMD": "093045" // 주문 시각
}
}
Step 3 · 20min
3단계 — W7 Claude 에이전트 + 2단계 승인 시스템
W7 Orchestrator의 verdict를 KIS 주문으로 연결하되, 자동 실행 전 인간 검토 단계를 추가합니다. 모의투자라도 습관을 미리 들이는 것이 중요합니다.
🪜 안전 사다리 — 3단계 자동화 레벨
L0Manual Only: 에이전트는 조언만, 주문은 수동 (초기 학습기)
L1Human-in-the-Loop: 에이전트 주문 제안 → Discord 버튼 승인 → 실행 (추천)
L2Approved Whitelist: 특정 종목+금액 사전 승인 건만 완전 자동
L3Fully Autonomous: confidence 5/5 + 엄격한 Risk Guard 하에서만 자동 (실계좌 금지 권장)
Level 1 — Discord 2단계 승인 구현
🔧 W7 Orchestrator + KIS + Discord 승인 워크플로
Schedule→평일 오전 8시 30분 (장 개장 전)
W7 Orchestrator→News·Macro 에이전트 실행 → 한국 종목 verdict
IF: BUY & conf ≥ 4→강한 신호만 승인 요청 단계로
Discord 버튼 메시지→"삼성전자 10주 매수 승인? [✅] [❌]" 전송
Webhook: 응답 대기→Discord Interaction 수신 (최대 30분 대기)
Switch: 승인/거부→✅ 승인 → 주문, ❌ 거부 → 로그만
HTTP: HashKey 생성→주문 Body로 HASH 발급
HTTP: 매수 주문→VTTC0802U + hashkey 헤더로 KIS 주문
Sheets + Discord 완료→주문번호·체결가·시각 기록 + 알림
Discord 버튼 메시지 구성
// Discord Interaction 메시지 Body (Webhook 또는 Bot)
{
"content": "🤖 **자동매매 승인 요청**",
"embeds": [{
"title": "삼성전자 (005930) 매수 제안",
"color": 3066993,
"fields": [
{ "name": "수량", "value": "10주", "inline": true },
{ "name": "예상금액", "value": "724,000원", "inline": true },
{ "name": "Claude 신뢰도", "value": "4/5", "inline": true },
{ "name": "근거", "value": "HBM 수요 증가 뉴스 + RSI 과매도 반등" }
]
}],
"components": [{
"type": 1,
"components": [
{
"type": 2,
"style": 3,
"label": "✅ 승인하고 주문",
"custom_id": "approve_order_12345"
},
{
"type": 2,
"style": 4,
"label": "❌ 거부",
"custom_id": "reject_order_12345"
}
]
}]
}
Claude 주문 결정 프롬프트 — 한국 종목 특화
KIS 주문 어시스턴트 System Message
당신은
한국 주식 자동매매 어시스턴트입니다. W7 Orchestrator의 verdict와 현재 계좌 상태를 받아
구체적 주문 파라미터를 생성합니다.
입력:
• orchestrator_verdict (BUY / AVOID / WATCH / HOLD)
• confidence (1~5)
• ticker + 현재가
• account_balance (가용 예수금)
• current_holdings (기존 보유 수량)
주문 규칙:
•
BUY & confidence ≥ 4만 주문 생성 (나머지는 SKIP)
• 한 종목에
예수금의 2% 이내
• 한국 주식
최소 단위 1주, 10주 미만 투자는 SKIP (비용 대비 비효율)
• 시장가(
ORD_DVSN:01) 기본, 변동성 높은 종목은 지정가(
00) 권장
출력 JSON:
{
"action": "ORDER" | "SKIP",
"tr_id": "VTTC0802U" or "VTTC0801U",
"pdno": "종목코드",
"ord_dvsn": "00" | "01",
"ord_qty": 수량 문자열,
"ord_unpr": 가격 문자열,
"reasoning": "한 문장 근거",
"risk_note": "주의사항 한 문장"
}
모의투자임을 명심 — 실계좌 전환은 별도 심사 필요.
🚨 SP3 자주 발생하는 오류
"EGW00121 해시키 불일치"
HashKey 생성 Body와 실제 주문 Body가 다름. JSON 필드 순서·공백·타입 모두 동일해야. n8n에서는 Set 노드로 하나의 Body 객체를 만들고 두 노드에 동일 expression으로 전달.
"APBK0912 매수 가능 금액 부족"
모의투자 계좌도 매수 시 예수금 + 체결 대기 주문 금액이 맞아야. 이미 대기 주문이 많은지 확인. 미체결 주문 취소 후 재시도.
장외 시간 주문 거부
KIS 모의투자는 정규장 시간(09:00~15:30)만 체결. 단일가·시간외 주문은 별도 API. Schedule을 장 시간 내로 설정하거나, 08:30 분석 → 09:05 주문 구조.
Discord 버튼 응답이 n8n에 안 옴
Interactions Endpoint URL이 Discord Application Settings에 제대로 등록됐는지 + n8n Webhook이 Active 상태인지 확인. Discord 서명 검증 실패하면 Interactions 거부됨.
주문은 성공했는데 잔고에 안 보임
미체결 상태일 수 있음. 시장가가 아닌 지정가라면 가격이 맞지 않아 대기 중. VTTC8001R(주문 조회)로 상태 확인 — "접수" vs "체결".
SP3 완료 체크리스트
✅ 아래 모두 체크되면 KIS 특별세션 전체 완료
HashKey 생성 워크플로 구현 + 주문 Body와 동일 유지
매수 주문 API 성공 — 모의계좌 잔고에 반영 확인
매도 주문 API 성공 — TR_ID 분기 로직 검증
W7 Orchestrator verdict → KIS 주문 연결 완성
Discord 버튼 2단계 승인 시스템 구축 + 실제 테스트
주문 결과(주문번호·시각·수량) Sheets "kis_orders" 탭에 자동 기록
에러 발생 시 Discord 관리자 채널로 자동 알림 (W5 Error Trigger 재활용)
1주일간 운영 후 가상 자본 수익률 측정 + 회고
Integration Summary
KIS 특별세션 전체 통합
🎯 이제 여러분이 가진 것:
• Alpaca Paper Trading (미국 주식) — W8에서 완성
• KIS 모의투자 (한국 주식) — SP1~3에서 완성
• Binance Testnet (암호화폐) — 과제로 확장 가능
3대 시장을 모두 자동매매할 수 있는 통합 에이전트 시스템을 갖추게 됐습니다. 이 수준의 포트폴리오는 입문자뿐 아니라 주니어 퀀트 경력자에게도 강한 차별점입니다.
이력서/지원서 한 줄 추가 문구
KIS 경험 이력서 Bullet
• 한국투자증권 Open API (KIS Developers) 연동 자동매매 시스템 구축 — OAuth2 토큰 자동 재발급, HashKey 생성, TR_ID 체계 이해
• W7 멀티 에이전트 시스템과 통합해 국내 주식(KOSPI/KOSDAQ) 대상 자동 매수/매도 실행, Discord 2단계 승인 시스템 구현
• 모의투자 환경에서 1주일간 운영, 가상 자본 수익률 +X.X% 달성
다음 단계 — 실계좌 전환 전 체크리스트
🔍 실계좌 연동을 고려한다면 (필수 검증)
모의투자에서 최소 3개월 안정 운영 (월별 수익률 양의 값)
Risk Guards 4단계 모두 실제 발동 경험 + 로그 확인
에이전트 판단 오류 발견 시 즉시 중단 버튼 구현
KIS Developers 실계좌 별도 신청 (모의와 별개)
URL과 TR_ID를 전환하기 전 100번 이상 재확인
처음에는 소액 (1종목 10만원 이내) 단일 매수로 검증
세금 신고 대비 매매 기록 백업 시스템 구축
🚨 실계좌 전환에 대한 최종 조언
이 과정은 교육 목적입니다. AI 에이전트가 아무리 정확해도 시장은 예측 불가능하고, 시스템 오류로 대규모 손실이 발생할 수 있습니다. 실계좌 전환은 반드시 소액부터 + 엄격한 손실 한도 + 수동 모니터링 하에서만. 수강생 여러분은 이 8주+특별세션 기록을 포트폴리오로 활용해 금융 IT·퀀트 인턴십에 도전하는 것이 최고의 다음 단계입니다. 돈은 커리어로 훨씬 더 크게 벌 수 있습니다.