본문 바로가기
업비트 트레이더

1편: 업비트 자동 트레이더 프로젝트 시작 — 기획과 환경 구성

by WELab74 2026. 3. 21.
반응형

왜 자동 트레이더를 만들었나

코인 투자를 하면서 항상 느끼는 문제가 있었다. 매번 차트를 보면서 언제 사고 팔아야 할지 감으로 결정하다 보니 감정이 개입되고, 정작 좋은 타이밍을 놓치는 경우가 많았다.

그래서 생각했다. "데이터 기반으로 자동으로 매매해주는 프로그램을 만들면 어떨까?"

이 시리즈는 업비트 API와 Python을 활용해 자동 트레이더를 만드는 전 과정을 기록한 글이다.


기술 스택 선정

언어: Python

자동 트레이더를 만들 때 가장 중요한 건 생태계다. 트레이딩 라이브러리가 얼마나 풍부한지, 커뮤니티가 얼마나 활성화되어 있는지가 핵심이다.

언어 라이브러리 생태계 속도 추천도
Python 압도적으로 풍부 보통 ★★★★★
Node.js 보통 빠름 ★★★★
Rust/Go 거의 없음 매우 빠름 ★★

트레이딩 전용 라이브러리들이 Python에 집중되어 있어서 Python을 선택했다.

주요 라이브러리

ccxt          # 업비트 포함 100개 이상 거래소 통합 API
pandas        # 캔들 데이터 가공/분석
numpy         # 수치 계산
ta            # RSI, MACD 등 기술적 지표 계산
SQLAlchemy    # 캔들 데이터 DB 저장
APScheduler   # 주기적 전략 실행
python-dotenv # API 키 환경변수 관리
loguru        # 로그 기록

업비트 API 연동

API 키 발급

업비트 자동매매를 위해서는 API 키가 필요하다.

  1. 업비트 로그인 → 우측 상단 프로필 → Open API 관리
  2. 필요한 권한 체크
    • ✅ 자산조회
    • ✅ 주문조회
    • ✅ 주문하기
    • ❌ 출금하기 (절대 체크 금지)
  3. IP 주소 등록 (보안을 위해 내 IP만 허용)
  4. Access Key, Secret Key 발급

주의: Secret Key는 발급 시 단 한 번만 확인 가능하다. 반드시 안전한 곳에 보관해야 한다.

API 키 보관

발급받은 키는 절대 코드에 직접 넣으면 안 된다. .env 파일에 저장하고 .gitignore에 추가해서 Git에 올라가지 않도록 한다.

UPBIT_ACCESS_KEY=발급받은_access_key
UPBIT_SECRET_KEY=발급받은_secret_key

연결 테스트

API 연결이 잘 됐는지 확인하는 코드를 작성해서 테스트했다.

BTC 현재가: 106,000,000 KRW
24h 변동:   +0.01%
KRW 잔고:   1,345,641 원

정상적으로 잔고 조회와 시세 조회가 됐다.


데이터 수집: 3년치 1시간봉

왜 1시간봉인가

처음엔 5분봉을 고려했지만 1시간봉을 선택했다.

봉 단위 3년치 캔들 수 노이즈 적합한 전략
5분봉 315,000개 많음 단타
1시간봉 26,000개 적음 스윙
4시간봉 6,500개 매우 적음 중기

1시간봉이 노이즈가 적어 MA/RSI 전략 신호 신뢰도가 높고, 24시간 실시간 모니터링 없이도 1시간마다 체크하면 충분하다.

업비트 API 직접 호출

ccxt의 since 파라미터가 업비트와 잘 맞지 않는 문제가 있었다. 업비트 API 특성상 최신→과거 역방향 수집 방식을 써야 한다.

# 업비트 캔들 API
GET https://api.upbit.com/v1/candles/minutes/60
파라미터: market=KRW-BTC, to=특정시각, count=200

to 파라미터에 특정 시각을 넣으면 그 이전 200개를 가져오는 방식이다. 이걸 반복해서 2023년 1월까지 역방향으로 수집했다.

수집 결과

코인 수집 개수 기간
KRW-BTC 28,163개 2022-12 ~ 현재
KRW-ETH 28,161개 2022-12 ~ 현재
KRW-XRP 28,160개 2022-12 ~ 현재
KRW-ADA 28,161개 2022-12 ~ 현재
KRW-SOL 28,162개 2022-12 ~ 현재

총 약 14만 개의 캔들 데이터를 SQLite DB에 저장했다.


다음 편에서는 이 데이터를 분석하고 전략을 수립하는 과정을 소개한다.

반응형