파이썬으로 만드는 기본 구조 정리
자동매매는 더 이상 전문 트레이더들만의 영역이 아니다. 누구나 무료로 공개된 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 + 골든크로스 기반 전략, 수익이 나는 이유〉**에 대해 분석해보겠습니다.
또한 각종 백테스트 방법, 결과 정리 방식도 함께 소개할 예정입니다.
'📈 자동매매 & 퀀트 투자' 카테고리의 다른 글
바이낸스 선물거래 자동매매, 위험은? 수익은? (0) | 2025.04.01 |
---|---|
다중 종목에 자동 적용하는 자동매매 시스템 설계 (0) | 2025.04.01 |
RSI + 골든크로스 기반 전략, 수익이 나는 이유 (0) | 2025.04.01 |
코드 실험편: 마하세븐 매매 전략을 코드로 구현해보기 (0) | 2025.04.01 |
마하세븐 매매법이란? (0) | 2025.03.31 |