자동 매매

자동매매 봇 제작 with 파이썬

1goldkyu 2025. 7. 9. 13:16

암호화폐 시장은 24시간 365일 열려 있고, 변동성이 크며 대응 속도가 수익을 좌우합니다. 이러한 시장 특성은 사람보다 기계, 즉 **자동매매 봇(bot)**이 훨씬 유리한 환경입니다. 실제로 전업 트레이더는 물론 일반 투자자들도 파이썬(Python)을 통해 자신만의 자동매매 알고리즘을 직접 구축하고, 실시간으로 시장에 대응하고 있습니다.

이 글에서는 파이썬을 활용한 자동매매 봇의 설계부터 실행까지 전체 구조를 체계적으로 정리합니다. 코딩을 잘 모르는 분도 개념을 익히고, 따라 해볼 수 있도록 구성했으며, 실전에서 바로 응용 가능한 정보도 포함했습니다.

 

 

자동매매 봇 제작 with 파이썬


🔧 1. 자동매매 봇이란?

자동매매 봇은 사람 대신 시장을 관찰하고, 조건을 만족하면 자동으로 매수/매도하는 프로그램입니다. 다음과 같은 요소를 포함합니다:

  • 실시간 데이터 수집 (캔들, 체결, 호가 등)
  • 조건 판단 (지표 계산, 패턴 분석 등)
  • 주문 실행 (시장가/지정가 매수·매도)
  • 포지션 추적 (평균가, 손익률, 보유 상태)
  • 예외 처리 및 로깅

즉, “시장 관찰 → 조건 판단 → 주문 실행”이라는 일련의 과정을 사람 개입 없이 반복적으로 수행하는 시스템입니다.


🧱 2. 자동매매 구조 설계 – 5단계

자동매매는 단순히 코드 몇 줄로 완성되는 것이 아니라, 명확한 구조 설계가 선행되어야 합니다. 파이썬으로 자동매매 봇을 만들기 위한 핵심 구성은 다음과 같습니다.

📌 ① 거래소 API 연결

  • 거래소(바이낸스, 업비트, 빗썸 등)의 REST API 또는 WebSocket API를 통해 데이터를 가져오고 주문을 전송
  • 대표 라이브러리: ccxt, websocket-client, requests
python
 
import ccxt exchange = ccxt.binance({ 'apiKey': 'your_api', 'secret': 'your_secret' })

📌 ② 데이터 수집 및 저장

  • 캔들 데이터 (fetch_ohlcv), 체결 데이터, 호가 정보 등을 수집
  • 수집된 데이터를 pandas, sqlite, csv 등에 저장하거나 메모리 유지
python
 
ohlcv = exchange.fetch_ohlcv('BTC/USDT', timeframe='1m', limit=100)

📌 ③ 전략 설계 및 신호 판단

  • 조건을 정의 (예: 이동평균선 골든크로스, RSI < 30 등)
  • 조건 만족 시 매수/매도 신호 발생
python
 
def signal_generator(df): ma5 = df['close'].rolling(5).mean() ma20 = df['close'].rolling(20).mean() if ma5.iloc[-2] < ma20.iloc[-2] and ma5.iloc[-1] > ma20.iloc[-1]: return "buy" return None

📌 ④ 주문 실행 및 포지션 관리

  • 시장가/지정가 주문 실행
  • 포지션 상태(진입, 익절, 손절) 기록 및 관리
python
 
def place_order(signal): if signal == "buy": exchange.create_market_buy_order('BTC/USDT', 0.01) elif signal == "sell": exchange.create_market_sell_order('BTC/USDT', 0.01)

📌 ⑤ 반복 실행 및 로깅

  • 일정 주기마다 전체 전략을 반복 실행
  • 예외 발생 시 로깅 또는 알림
python
 
import time while True: try: df = fetch_ohlcv() sig = signal_generator(df) if sig: place_order(sig) time.sleep(60) except Exception as e: print(f"[에러] {e}") continue

🧠 3. 실전 전략 예시 – 이동평균선 교차 전략

이 전략은 대표적인 추세 추종 전략으로, 단기 이동평균선이 장기 이동평균선을 상향 돌파할 때 매수하는 방식입니다.

진입 조건:

  • 5일 이동평균선 > 20일 이동평균선으로 골든크로스 발생
  • 캔들 종가 기준으로 확인

청산 조건:

  • 5일선이 20일선을 하향 이탈 (데드크로스) 또는 수익률이 2% 이상

장점: 추세 따라가며 수익 실현
단점: 횡보 구간에서는 허위 신호 많음


🧮 4. 손익 계산 로직도 중요

자동매매에서는 신호 발생보다 수익 계산과 리스크 관리가 훨씬 중요합니다. 진입가, 수수료, 실현손익, 미실현 손익, 수익률 등을 계산하고 기록하는 모듈을 따로 설계해야 합니다.

python
 
def calc_pnl(entry_price, current_price, fee=0.0004): pnl = ((current_price - entry_price) / entry_price) - fee * 2 return round(pnl * 100, 2)
 

이렇게 하면 실제 체결가 대비 손익률을 정확하게 알 수 있으며, 일정 기준 도달 시 자동 청산 조건도 걸 수 있습니다.


📊 5. GUI 또는 웹 연동 (선택 사항)

시각적으로 자동매매 상태를 보고 싶다면 tkinter, PyQt, 또는 Flask, Dash 등으로 웹 UI를 만들 수 있습니다.

  • 현재가 표시
  • 잔고 및 포지션 표시
  • 수익률, 주문 기록 로그 표시
  • 시작/중지 버튼

초보자에게는 GUI 없이 CLI로 시작해도 좋고, 익숙해지면 확장할 수 있습니다.


✅ 6. 자동매매에서 꼭 고려해야 할 사항

요소설명
거래소 API 제한 초과 요청 시 차단 위험 → rateLimit 설정
예외 처리 주문 실패, 연결 오류, 가격 이상 등 철저히 방어
포지션 중복 동일 자산 중복 진입 방지 로직 필요
테스트 실제 투자 전 반드시 백테스트 또는 소액 실험
로깅 매매 내역, 전략 신호, 시스템 오류 로그 필수
 

🔒 7. 실전으로 연결하기 전 체크리스트

✅ 거래소 테스트넷에서 시뮬레이션 실행
✅ 자동매매 시간 로그 기록 확인
✅ 주문 체결 여부 확인 및 예외 로직 점검
✅ 수익률 계산이 일관되게 작동하는지 확인
✅ 스케줄러나 VPS로 24시간 운영 환경 준비


✨ 마무리 – 자동매매는 단순한 코드가 아닌 시스템이다

많은 사람들이 "자동매매 봇"을 그저 몇 줄 코드로 끝나는 것으로 생각하지만, 실제로는 데이터 분석, 전략 설계, 주문 관리, 예외 처리, 보안까지 포함된 하나의 종합 시스템입니다.

파이썬은 그 모든 기능을 하나로 통합할 수 있는 최고의 도구이며, 비교적 쉽게 접근할 수 있어 초보자도 자동매매 세계에 입문하기 좋습니다.

한 번 만들어 놓으면 반복 실행되며 인간보다 빠르고 정확하게 거래를 수행하므로, 꾸준한 수익과 시간 절약이라는 두 마리 토끼를 잡을 수 있습니다.