카테고리 없음

코인 자동매매 봇 만들기 #1 - 업비트 API 키 발급부터 첫 주문까지

deathang 2026. 3. 24. 11:59

이 시리즈를 읽으면:

- 업비트 API 키 발급 방법

- Python으로 첫 코인 주문 넣기

- 실전에서 주의할 점

 

난이도: ★☆☆☆☆ (초보자)

소요 시간: 30분

 

━━━━━━━━━━━━━━━━━━━━

 

1. 왜 API가 필요한가?

 

차트를 직접 보면서 클릭으로 매매하는 건 한계가 있습니다:

 

❌ 문제점

• 퇴근하고 보니 이미 늦음

• 회의 중에 급락 → 손절 타이밍 놓침

• 새벽에 급등 → 잠자는 중

 

✅ API 사용 시

• 24시간 자동 감시

• 조건 만족하면 즉시 매매

• 감정 배제 가능

 

━━━━━━━━━━━━━━━━━━━━

 

2. 업비트 API 키 발급하기

 

2-1. 업비트 로그인

1. https://upbit.com 접속

2. 로그인 (카카오/네이버/구글 계정 연동 가능)

 

2-2. API 관리 페이지 이동

1. 우측 상단 "내 정보" 클릭

2. "Open API 관리" 선택

 

2-3. API 키 발급

1. "API 키 발행" 버튼 클릭

2. 권한 설정 (중요!)

   ✅ 자산 조회

   ✅ 주문 조회

   ✅ 주문하기

   ❌ 출금하기 (절대 체크 금지!)

3. IP 제한 설정

   - "특정 IP만 허용" 선택 권장

   - 집/회사 고정 IP 등록 (보안 강화)

4. 2단계 인증 (OTP) 입력

5. "API 키 발행" 클릭

 

2-4. API 키 저장 (매우 중요!)

Access Key: iqxxxxxxxx... (공개해도 됨)

Secret Key: Tuxxxxxxxx... (절대 공개 금지!)

 

⚠️ 주의사항:

• Secret Key는 단 한 번만 표시됩니다

• 메모장에 복사해서 안전한 곳에 저장

• 타인에게 절대 공유 금지 (계좌 털립니다!)

 

━━━━━━━━━━━━━━━━━━━━

 

3. Python 환경 설정

 

3-1. Python 설치 확인

python --version

 

Python 3.8 이상 필요

없으면 https://python.org 에서 설치

 

3-2. pyupbit 라이브러리 설치

pip install pyupbit

 

━━━━━━━━━━━━━━━━━━━━

 

4. 첫 번째 코드: 잔고 조회

 

파일명: check_balance.py

 

import pyupbit

 

# API 키 입력 (본인 키로 변경!)

access = "YOUR_ACCESS_KEY"

secret = "YOUR_SECRET_KEY"

 

# Upbit 객체 생성

upbit = pyupbit.Upbit(access, secret)

 

# 잔고 조회

balances = upbit.get_balances()

 

print("=== 내 잔고 ===")

for b in balances:

    currency = b['currency']

    balance = float(b['balance'])

    avg_buy_price = float(b['avg_buy_price'])

    

    if balance > 0:

        print(f"{currency}: {balance:.8f} (평단: {avg_buy_price:,.0f})")

 

실행:

python check_balance.py

 

결과 예시:

=== 내 잔고 ===

KRW: 100000.0 (평단: 0)

BTC: 0.00050000 (평단: 95000000)

 

━━━━━━━━━━━━━━━━━━━━

 

5. 두 번째 코드: 실시간 시세 확인

 

파일명: check_price.py

 

import pyupbit

 

# 비트코인 현재가 조회

btc_price = pyupbit.get_current_price("KRW-BTC")

print(f"비트코인 현재가: {btc_price:,.0f}원")

 

# 여러 종목 동시 조회

prices = pyupbit.get_current_price(["KRW-BTC", "KRW-ETH", "KRW-XRP"])

for market, price in prices.items():

    print(f"{market}: {price:,.0f}원")

 

실행 결과:

비트코인 현재가: 95,000,000원

KRW-BTC: 95,000,000원

KRW-ETH: 3,200,000원

KRW-XRP: 2,100원

 

━━━━━━━━━━━━━━━━━━━━

 

6. 세 번째 코드: 첫 주문 넣기

 

⚠️ 주의: 실제 돈이 사용됩니다!

 

파일명: first_order.py

 

import pyupbit

 

# API 키 입력

access = "YOUR_ACCESS_KEY"

secret = "YOUR_SECRET_KEY"

 

upbit = pyupbit.Upbit(access, secret)

 

# XRP 5,000원어치 매수

print("XRP 5,000원 매수 시작...")

result = upbit.buy_market_order("KRW-XRP", 5000)

 

if result:

    print("✅ 매수 성공!")

    print(f"주문 ID: {result['uuid']}")

else:

    print("❌ 매수 실패")

 

매개변수 설명:

• "KRW-XRP": 리플(XRP) 마켓

• 5000: 5,000원어치 매수

 

다른 종목 예시:

upbit.buy_market_order("KRW-BTC", 10000) # 비트코인 1만원

upbit.buy_market_order("KRW-ETH", 10000) # 이더리움 1만원

 

━━━━━━━━━━━━━━━━━━━━

 

7. 매도하기

 

# 보유 중인 XRP 전량 매도

result = upbit.sell_market_order("KRW-XRP", 4.797)

 

# 또는 보유량 자동 조회 후 매도

balances = upbit.get_balances()

for b in balances:

    if b['currency'] == 'XRP':

        xrp_balance = float(b['balance'])

        if xrp_balance > 0:

            upbit.sell_market_order("KRW-XRP", xrp_balance)

            print(f"XRP {xrp_balance}개 매도 완료!")

 

━━━━━━━━━━━━━━━━━━━━

 

8. 실전 주의사항

 

🔒 보안

1. Secret Key는 절대 GitHub에 올리지 마세요

   - 파일로 분리: secrets.json

   - .gitignore에 추가

2. 출금 권한은 절대 주지 마세요

   - API 키 탈취 시 전액 출금 위험

3. IP 제한 설정

   - 내 IP만 허용하면 안전

 

💰 자금 관리

1. 테스트는 소액으로

   - 첫 주문: 5,000원 권장

   - 봇 안정화 후 금액 증가

2. 최대 손실 한도 설정

   - 하루 최대 손실: -5,000원 같은 룰

3. 수수료 고려

   - 업비트 수수료: 0.05%

   - 5,000원 거래 시 약 2.5원

 

🐛 테스트

# 실제 주문 전 시뮬레이션

print("5,000원으로 XRP 몇 개 살 수 있나?")

xrp_price = pyupbit.get_current_price("KRW-XRP")

quantity = 5000 / xrp_price

print(f"예상 수량: {quantity:.4f} XRP")

 

━━━━━━━━━━━━━━━━━━━━

 

9. 다음 편 예고

 

튜토리얼 #2: MACD 지표로 매수 타이밍 잡기

• 기술적 지표란?

• MACD OSC 계산하기

• 자동 매수 조건 만들기

 

━━━━━━━━━━━━━━━━━━━━

 

질문 있으신가요?

 

댓글로 남겨주세요! 👇

 

시리즈 목록:

1. ✅ 업비트 API 키 발급부터 첫 주문까지 (현재 글)

2. MACD 지표로 매수 타이밍 잡기 (작성 예정)

3. 텔레그램 알림 연동하기 (작성 예정)

4. 노션에 자동 리포트 만들기 (작성 예정)