본문 바로가기
📈 자동매매 & 퀀트 투자

업비트 자동매매 프로그램

by digital-sidejob 2025. 3. 31.
반응형

파이썬으로 만드는 기본 구조 정리

자동매매는 더 이상 전문 트레이더들만의 영역이 아니다. 누구나 무료로 공개된 API와 파이썬을 이용해 자신의 전략을 자동화할 수 있는 시대가 되었다. 이번 글에서는 국내 거래소 중 가장 인기 있는 **업비트(Upbit)**의 API를 기반으로, 파이썬으로 자동매매 시스템을 구축하는 기본 구조를 자세히 설명한다.

실제로 필자도 이 구조를 바탕으로 마하세븐 매매법을 구현하고 있으며, 이 글은 그 실전 경험을 바탕으로 작성되었다.


반응형

1. 업비트 API란?

업비트는 공식적으로 Open API를 제공하고 있으며, 이를 통해 다음과 같은 작업이 가능하다.

  • 실시간 시세 조회
  • 잔고 확인
  • 매수/매도 주문
  • 주문 취소
  • 체결 내역 확인 등

API 연동을 위해서는 Open API 키를 발급받아야 하며,
이를 이용해 HTTP 요청을 보내면 다양한 기능을 사용할 수 있다.


2. 기본 라이브러리: PyUpbit

가장 많이 사용되는 업비트 연동용 파이썬 라이브러리는 PyUpbit이다.
업비트 API를 간편하게 다룰 수 있도록 추상화한 라이브러리이며, 설치는 매우 간단하다.

pip install pyupbit
 

3. 자동매매 프로그램의 전체 흐름

자동매매의 기본 구조는 다음과 같은 흐름으로 구성된다:

[데이터 수집][매매 조건 판단][주문 실행][결과 기록 및 반복]
 

이를 코드 수준에서 나누면 다음과 같이 정리할 수 있다.

단계                     주요 기능
1단계 현재 시세, 이동평균, RSI 등 데이터 수집
2단계 조건에 따른 매수/매도 신호 판단
3단계 업비트에 실제 주문 전송 (매수/매도)
4단계 매매 내역 로깅, 조건 반복 (crontab 등으로 실행)

4. 기본 코드 구조 예시

다음은 가장 기본적인 업비트 자동매매 스크립트 구조다. (예시: RSI 기반 매수)

📦 주요 모듈

import pyupbit
import time
import datetime

🔑 API 키 설정

access = "발급받은-access-key"
secret = "발급받은-secret-key"
upbit = pyupbit.Upbit(access, secret)

📈 RSI 계산 함수

def get_rsi(df, period=14):
    delta = df['close'].diff()
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    avg_gain = gain.rolling(period).mean()
    avg_loss = loss.rolling(period).mean()
    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

📊 매수 조건 확인

def check_buy_signal(ticker="KRW-BTC"):
    df = pyupbit.get_ohlcv(ticker, interval="minute60", count=100)
    rsi = get_rsi(df)
    if rsi.iloc[-1] > 60:
        return True
    return False

💰 매수 실행

def buy(ticker="KRW-BTC", krw=10000):
    upbit.buy_market_order(ticker, krw)

⏱ 자동 반복 실행

while True:
    now = datetime.datetime.now()
    if check_buy_signal("KRW-BTC"):
        buy("KRW-BTC", 10000)
    time.sleep(300)  # 5분마다 반복

 


5. 자동화의 핵심: 서버 + 반복 실행

PC에서 돌릴 수도 있지만, 클라우드 서버에서 상시 실행하는 것이 가장 안정적이다.
보통 다음과 같은 환경을 사용한다:

  • 서버: AWS EC2 (t2.micro), Google Cloud, Oracle Cloud 등
  • 실행 방식: crontab 또는 systemd로 일정 간격 자동 실행
  • 로그 관리: 매매 내역을 로그파일 또는 Google Spreadsheet로 저장
  • 알림 시스템: 텔레그램, 카카오톡으로 실시간 매매 결과 전송

이러한 시스템을 통해 24시간 시장을 감시하지 않아도 자동으로 매매가 이루어지고,
정해진 전략만 잘 짜여 있다면 감정 개입 없이 장기적으로 수익을 추구할 수 있다.


6. 실전 주의사항

  • API 키 보안: 절대로 깃허브나 클라우드에 노출되지 않도록 환경 변수로 관리
  • 실거래 전 백테스트 필수: 시뮬레이션으로 전략 유효성 검증
  • 수수료 포함 계산: 거래 비용이 누적되면 수익을 잠식
  • 시장 예외 상황 고려: 급등락, 점검, 거래 정지 등의 리스크 대비

📌 요약 정리

항목                                                             내용
사용 언어 Python 3.8 이상
핵심 라이브러리 PyUpbit, Pandas
조건 판단 방식 RSI, 이평선, 캔들 패턴 등
실행 방식 반복 루프 or crontab
수익 관리 방식 분할 매도, 스탑로스
보안 관리 API 키 환경 변수, 로그 모니터링

💬 다음 글 예고

자동매매의 핵심은 단순히 "돌리는 것"이 아니라,
시장 흐름에 맞는 전략을 얼마나 효과적으로 자동화하느냐에 달려 있습니다.

다음 글에서는 실제 자동매매 전략 중 하나인
**〈RSI + 골든크로스 기반 전략, 수익이 나는 이유〉**에 대해 분석해보겠습니다.
또한 각종 백테스트 방법, 결과 정리 방식도 함께 소개할 예정입니다.

반응형