자동매매 시스템은 어떻게 구성되는가 > 매매 기술 노트
본문 바로가기
코인랩 코인랩 업비트 자동매매 리서치 & 기술노트
사이트 내 전체검색

매매 기술 노트

시스템설계 자동매매 시스템은 어떻게 구성되는가

게시물 옵션

본문

매매 기술 노트 · 11 · 자동매매 시스템

자동매매 시스템은 어떻게 구성되는가

자동매매를 처음 만들 때는 매수 조건과 매도 조건만 코드로 만들면 끝이라고 생각하기 쉽다. 하지만 실제로 돈이 움직이는 시스템은 훨씬 복잡하다. 시장 데이터를 가져오고, 지표를 계산하고, 매매 여부를 판단하고, 위험을 확인한 뒤 주문을 보내고, 체결 결과를 확인하고 기록해야 한다.

DATA
시장 데이터
STRATEGY
매매 판단
RISK
위험 관리
EXECUTION
주문 실행

자동매매는 매수 코드 하나로 끝나지 않는다

처음 자동매매 프로그램을 만들면 보통 이런 식으로 생각한다. 가격을 가져온 다음 RSI를 계산하고, RSI가 특정 값 아래로 내려가면 매수한다. 그리고 일정 수준 올라가면 매도한다.

실제로 가장 단순한 봇이라면 이것만으로도 동작할 수 있다. 하지만 거래가 실제로 발생하기 시작하면 새로운 문제가 계속 나타난다. 주문이 실패할 수도 있고, 일부만 체결될 수도 있으며, 프로그램이 재시작될 수도 있다. 거래소 API가 잠시 응답하지 않는 상황도 발생한다.

따라서 제대로 된 자동매매 시스템은 여러 기능을 하나의 큰 코드로 만드는 것보다 각 기능의 역할을 나눠서 설계하는 것이 중요하다.

자동매매 시스템 전체 구조 거래소 API 가격 · 캔들 · 잔고 데이터 엔진 OHLCV · 거래량 · 지표 전략 엔진 매수 · 매도 신호 리스크 관리 손절 · 사이징 · 한도 주문 실행 주문 · 체결 확인 상태 관리 보유 · 주문 · 잔고 로그 · 모니터링 기록 · 알림 · 장애 주문이 끝나는 것이 아니라 체결 결과와 현재 상태까지 확인해야 하나의 거래가 완성된다.
자동매매 시스템은 데이터 수집 → 전략 판단 → 리스크 확인 → 주문 실행 → 상태 저장과 모니터링이 연결된 구조로 보는 것이 좋다.

1. 데이터 수집

모든 자동매매의 출발점은 시장 데이터다. 현재 가격 하나만 가져오는 전략도 있지만, 대부분의 기술적 분석 전략은 일정 기간의 캔들이 필요하다.

RSI를 계산하려면 과거 가격 데이터가 필요하고, 볼린저밴드를 계산하려면 일정 개수의 종가가 필요하다. 거래량 조건을 사용하는 전략이라면 거래량 데이터도 함께 필요하다.

거래소 ↓ 현재 가격 + OHLCV 캔들 + 거래량 ↓ 지표 계산 ↓ 전략 판단
중요 지표 계산용 데이터와 주문 실행에 사용하는 현재 가격은 구분하는 것이 좋다. 특히 아직 완성되지 않은 캔들을 사용하면 백테스트와 실전 결과가 달라질 수 있다.

2. 전략 엔진

전략 엔진은 수집된 데이터를 보고 매수 또는 매도 여부를 결정한다.

예를 들어 단순히 RSI 하나만 사용하는 전략은 다음과 같이 만들 수 있다.

RSI ≤ 기준값 ↓ 매수 신호

하지만 실제 전략에서는 하나의 지표만 사용하는 것보다 여러 조건을 조합하는 경우가 많다.

RSI 과매도 + 볼린저밴드 하단 근접 + 가격 반등 + 거래량 증가 ↓ 매수 후보 ↓ 리스크 확인 ↓ 최종 매수

여기서 중요한 것은 전략 엔진과 주문 실행을 분리하는 것이다. 전략은 “매수할 것인가?”를 판단하고, 주문 모듈은 “어떻게 주문할 것인가?”를 담당하는 방식이다.

3. 리스크 관리

자동매매에서 가장 중요한 부분 중 하나가 리스크 관리다. 좋은 매수 신호가 발생했다고 해서 계좌 전체를 매수해서는 안 된다.

리스크 관리에서는 최소한 다음 항목을 고려할 필요가 있다.

  • 1회 최대 매수 금액
  • 동시 보유 가능한 종목 수
  • 종목별 최대 투자 비율
  • 손절 기준
  • 트레일링 스탑
  • 하루 최대 손실
  • 연속 손실 시 거래 제한

앞선 7~10편에서 다뤘던 손절, 트레일링 스탑, 손익비, 포지션 사이징이 모두 이 영역에 해당한다.

흔한 실수 매수 신호가 강하다는 이유로 포지션 크기까지 크게 만드는 것이다. 좋은 신호와 큰 베팅은 같은 개념이 아니다. 신호의 확신도와 계좌의 위험 한도는 별도로 관리해야 한다.

4. 주문 실행

전략 엔진이 매수를 결정했다고 해서 거래가 끝나는 것은 아니다. 실제로는 거래소에 주문을 보내고 체결 여부를 다시 확인해야 한다.

주문 실행 과정 매수 신호 주문 가능 잔고 · 중복주문 주문 전송 체결 확인 완료 · 부분체결 상태 저장 주문 요청 성공 ≠ 실제 체결 완료 반드시 주문 상태와 실제 보유 수량을 확인해야 한다.
거래소 API가 주문 요청을 정상적으로 받아도 실제 체결이 완료됐다고 단정해서는 안 된다. 주문 상태와 실제 잔고를 확인하는 과정이 필요하다.

5. 프로그램 재시작을 고려해야 한다

자동매매 프로그램은 언젠가 재시작된다. 서버가 재부팅될 수도 있고, 프로그램이 업데이트될 수도 있고, 예외가 발생해서 프로세스가 종료될 수도 있다.

문제는 프로그램이 다시 시작됐을 때다. 프로그램 메모리에만 현재 보유 종목을 저장했다면 재시작과 동시에 그 정보가 사라진다.

따라서 재시작하면 거래소에서 실제 잔고와 주문 상태를 다시 조회하고 현재 상태를 복구하는 과정이 필요하다.

프로그램 시작 ↓ 거래소 잔고 조회 ↓ 미체결 주문 조회 ↓ 현재 보유 종목 확인 ↓ 내부 상태 복구 ↓ 정상 매매 시작
실전 원칙 프로그램 내부의 상태값보다 거래소의 실제 잔고와 주문 상태를 우선하는 구조가 좋다. 프로그램이 무엇을 기억하고 있는지가 아니라 실제 계좌가 어떤 상태인지 확인해야 한다.

6. 로그가 곧 분석 데이터가 된다

자동매매는 사람이 매 순간 옆에서 지켜볼 수 없다. 그래서 로그가 중요하다.

단순히 “BTC 매수”라고 기록하는 것보다 왜 매수했는지를 남겨야 나중에 전략을 개선할 수 있다.

PRICE
현재가격
RSI
지표값
VOLUME
거래량
REASON
매매이유
  • 종목
  • 매수 당시 가격
  • RSI와 주요 지표값
  • 볼린저밴드 위치
  • 거래량 상태
  • 시장 국면
  • 충족된 매수 조건
  • 주문 가격과 실제 체결 가격
  • 매도 이유
  • 손익

이런 데이터가 계속 쌓이면 로그는 단순한 기록을 넘어 전략 개선을 위한 데이터베이스가 된다.

7. 자동매매에서 가장 중요한 것은 예외 상황이다

정상적인 상황만 생각하면 자동매매 시스템은 어렵지 않다. 진짜 어려운 부분은 예상하지 못한 상황이다.

정상 상황과 예외 상황 정상 흐름 신호 → 주문 → 체결 API 응답 지연 주문 부분 체결 프로그램 재시작 실제 운영에서 발생할 수 있는 상황
자동매매 시스템의 품질은 정상적인 거래보다 오류와 예외 상황을 얼마나 안전하게 처리하는지에서 크게 차이난다.

좋은 시스템은 기능보다 경계가 명확하다

자동매매 프로그램이 커질수록 모든 기능을 하나의 함수와 하나의 파일에 넣는 방식은 관리하기 어려워진다.

데이터 수집 코드를 수정했는데 주문 코드가 영향을 받거나, 매수 조건을 변경했는데 리스크 관리까지 바뀌는 구조라면 작은 수정 하나가 전체 시스템에 영향을 줄 수 있다.

반대로 역할을 분리하면 전략을 변경하더라도 주문 시스템은 그대로 사용할 수 있고, 거래소 API를 변경하더라도 전략 자체는 유지할 수 있다.

기억할 것 자동매매에서 코드를 많이 작성하는 것보다 중요한 것은 각 기능이 어디까지 책임지는지를 명확하게 만드는 것이다.

요약

자동매매 시스템은 단순한 매수·매도 프로그램이 아니다. 시장 데이터를 수집하고, 전략을 계산하고, 위험을 확인하고, 주문을 실행한 다음 체결 결과와 현재 상태를 다시 확인해야 한다.

여기에 프로그램 재시작, API 오류, 부분 체결, 데이터 오류 같은 예외 상황까지 고려해야 실제 운영 가능한 시스템이 된다.

결국 좋은 자동매매 시스템은 “언제 매수할 것인가”만 잘 판단하는 시스템이 아니라, 예상하지 못한 상황에서도 정해진 규칙에 따라 안전하게 동작하는 시스템이다.

매매 기술 노트 · 자동매매 시스템
  1. 11 · 자동매매 시스템은 어떻게 구성되는가 — 지금 글
  2. 12 · 백테스트와 실전 매매가 다른 이유
  3. 13 · 좋은 매매 신호를 만드는 방법
  4. 14 · 시장 상황을 구분해야 하는 이유
  5. 15 · 자동매매 봇을 실제로 운영할 때 생기는 문제
출처 거래소 API(가격·캔들·잔고·주문·체결 조회) 명세는 업비트 개발자 문서 — docs.upbit.com/kr

본 글은 자동매매 시스템의 일반적인 구조와 원리를 설명하는 교육용 콘텐츠이며, 특정 종목이나 매매를 권유하는 내용이 아닙니다. 모든 투자 판단과 책임은 본인에게 있습니다.

추천0 비추천0
스크랩 · 신고

댓글목록

등록된 댓글이 없습니다.

매매 기술 노트 • OFFICIAL

매매 기술 노트

RSI·볼린저밴드·이동평균선·MACD·거래량 지표 정리와 적용 경험
22TOTAL
22POSTS

매매 기술 노트

22건
매매 기술 노트 목록
번호 제목 글쓴이 날짜 조회
22
<
코인랩
09-10 44
21
<
코인랩
08-08 719
20
<
코인랩
09-01 58
19
<
코인랩
08-27 147
18
<
코인랩
08-22 218
17
<
코인랩
08-19 213
16
<
코인랩
08-18 409
15
<
코인랩
08-17 223
14
<
코인랩
08-14 271
13
<
코인랩
08-13 310
12
<
코인랩
08-10 241
11
<
코인랩
08-09 233
열람중
<
코인랩
08-09 258
9
<
코인랩
08-07 292
8
<
코인랩
08-07 280
WELCOME
ID/PW 찾기
회원가입
오늘의 마켓
업비트 원화마켓 기준 · 5분 갱신
상승 232하락 47
24H 거래대금 17,754억
거래대금 TOP
JPYC-4.27%
XRP+1.79%
FOLD+2.05%
ETH+1.45%
BTC+1.37%
NEAR+10.29%
ONDO+2.14%
LSK-4.42%