학습 목표: 실시간 코인 가격 모니터링 봇 구축
자, 여러분! 현재 2026년, 급변하는 디지털 자산 시장에서 정보는 곧 기회입니다. 오늘은 여러분과 함께 파이썬 API를 활용하여 실시간 코인 가격을 모니터링하고, 설정한 조건에 따라 매수/매도 알림을 자동으로 보내는 봇을 단 5분 만에 완성하는 방법을 학습할 것입니다. 본 강의를 통해 여러분은 다음을 성취하게 될 것입니다:
- 파이썬을 이용한 외부 API 연동의 기본 원리 이해
- 실시간 코인 가격 데이터를 효율적으로 가져오는 방법 습득
- 특정 가격 조건에 따른 자동화된 매수/매도 알림 로직 구현
- 주기적인 작업을 위한 스케줄링 기법 적용
이 튜토리얼을 통해 얻은 지식은 단순히 코인 모니터링을 넘어, 다양한 실시간 데이터 처리 및 자동화 시스템 구축의 기초가 될 것입니다. 바로 시작해봅시다!
사전 준비 사항
본격적인 실습에 앞서, 원활한 진행을 위해 몇 가지 환경 설정이 필요합니다. 아래 내용을 참고하여 개발 환경을 준비해주세요.
권장 개발 환경
- 통합 개발 환경 (IDE): Visual Studio Code (최신 버전 권장)
- 운영체제 (OS): Windows 10/11, macOS (최신 버전), Linux (Ubuntu 22.04 LTS 이상)
- 파이썬 (Python) 버전: 3.9 이상 (예: 3.10, 3.11, 3.12)
필수 라이브러리 설치
이번 실습에 필요한 파이썬 라이브러리들을 미리 설치해야 합니다. 터미널 또는 명령 프롬프트를 열고 다음 명령어를 실행해주세요.
pip install pyupbit python-dotenv schedulepyupbit: 국내 대표 암호화폐 거래소인 업비트(Upbit)의 API를 파이썬에서 쉽고 편리하게 사용할 수 있도록 도와주는 라이브러리입니다.python-dotenv: 환경 변수를.env파일에서 로드하여 API 키와 같은 민감한 정보를 코드에 직접 노출하지 않고 안전하게 관리할 수 있게 해줍니다.schedule: 특정 함수를 정해진 시간 간격으로 반복 실행하도록 스케줄링하는 데 사용됩니다.
모든 준비가 완료되었다면, 이제 실전 코딩으로 들어가 봅시다.
단계별 실습 과정
1단계: 프로젝트 환경 설정 및 Upbit API 키 발급
먼저, 프로젝트를 위한 작업 폴더를 생성하고, API 키를 안전하게 관리할 .env 파일을 설정합니다. 업비트 API를 사용하기 위해서는 API 키(Access Key, Secret Key)를 발급받아야 합니다.
- 작업 폴더 생성: 원하는 위치에
crypto_bot과 같은 이름으로 폴더를 만듭니다. .env파일 생성: 생성한crypto_bot폴더 안에.env파일을 생성하고, 아래와 같이 내용을 추가합니다.
UPBIT_ACCESS_KEY="YOUR_UPBIT_ACCESS_KEY"
UPBIT_SECRET_KEY="YOUR_UPBIT_SECRET_KEY"YOUR_UPBIT_ACCESS_KEY와 YOUR_UPBIT_SECRET_KEY 부분은 여러분이 업비트에서 발급받은 실제 키로 대체해야 합니다.
Upbit API 키 발급 방법:
- 업비트 웹사이트 로그인 > [MY] > [Open API 관리] 페이지로 이동합니다.
- [Open API 키 발급] 버튼을 클릭하고, 원하는 권한(예: 정보 조회)을 선택한 후 발급받습니다. 특히, ‘주문’ 권한은 신중하게 선택하고, IP 주소 등록을 통해 보안을 강화하는 것을 권장합니다. 본 튜토리얼에서는 ‘정보 조회’ 권한만으로 충분합니다.
API 키는 외부에 노출되지 않도록 각별히 주의해야 합니다. .env 파일은 Git과 같은 버전 관리 시스템에 업로드되지 않도록 .gitignore에 추가하는 것이 좋습니다.
2단계: Upbit API 연동 및 실시간 가격 조회
이제 main.py 파일을 생성하고, pyupbit 라이브러리를 사용하여 실시간 코인 가격을 조회하는 코드를 작성합니다. python-dotenv를 이용해 .env 파일에서 API 키를 안전하게 불러옵니다.
import pyupbit
import time
import schedule
from dotenv import load_dotenv
import os
# .env 파일 로드
load_dotenv()
# Upbit API 키 설정 (본인 키로 대체)
access_key = os.getenv("UPBIT_ACCESS_KEY")
secret_key = os.getenv("UPBIT_SECRET_KEY")
# Upbit 객체 초기화 (API 키 필요)
# pyupbit.Upbit(access_key, secret_key)는 실제 매매를 위한 것이며,
# 단순 가격 조회는 API 키 없이도 가능합니다.
# 여기서는 향후 확장성을 고려하여 일단 객체를 생성합니다.
upbit = pyupbit.Upbit(access_key, secret_key)
# 모니터링할 코인 설정
TICKER = "KRW-BTC" # 원화 시장 비트코인
def get_current_coin_price(ticker):
"""
지정된 코인의 현재 가격을 조회합니다.
"""
try:
current_price = pyupbit.get_current_price(ticker)
if current_price is not None:
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {ticker} 현재 가격: {current_price:,} KRW")
return current_price
else:
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] {ticker} 가격을 가져올 수 없습니다.")
return None
except Exception as e:
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 가격 조회 중 오류 발생: {e}")
return None
if __name__ == "__main__":
print("실시간 코인 가격 조회 테스트를 시작합니다...")
get_current_coin_price(TICKER)
print("테스트 완료.")위 코드를 실행하면, 현재 비트코인(KRW-BTC)의 실시간 가격이 콘솔에 출력되는 것을 확인할 수 있습니다. pyupbit.get_current_price() 함수는 매우 직관적으로 현재 가격을 가져옵니다.
3단계: 조건부 매수/매도 로직 구현
이제 가격 조회 기능 위에 매수/매도 조건을 추가하여 알림 로직을 구현합니다. 특정 가격 이하일 때 매수 알림을, 특정 가격 이상일 때 매도 알림을 보내도록 설정할 것입니다.
main.py 파일에 다음 코드를 추가하거나 수정합니다.
# ... (이전 코드 생략) ...
# 모니터링할 코인 및 목표 가격 설정
TICKER = "KRW-BTC" # 비트코인 (원화 시장)
BUY_PRICE = 40_000_000 # 매수 목표 가격 (예시: 4천만원)
SELL_PRICE = 45_000_000 # 매도 목표 가격 (예시: 4천5백만원)
def check_price_and_alert():
"""
실시간 코인 가격을 조회하고, 설정된 조건에 따라 매수/매도 알림을 출력합니다.
"""
current_price = get_current_coin_price(TICKER) # 기존 함수 재사용
if current_price is None:
print("가격 정보를 가져오지 못하여 조건 확인을 건너뜁니다.")
return
if current_price <= BUY_PRICE:
print(f"🚨🚨 매수 알림! {TICKER} 가격이 {BUY_PRICE:,} KRW 이하입니다. (현재: {current_price:,} KRW)")
# 여기에 실제 매수 주문 로직 또는 텔레그램/슬랙 알림 연동 코드를 추가할 수 있습니다.
elif current_price >= SELL_PRICE:
print(f"🔥🔥 매도 알림! {TICKER} 가격이 {SELL_PRICE:,} KRW 이상입니다. (현재: {current_price:,} KRW)")
# 여기에 실제 매도 주문 로직 또는 텔레그램/슬랙 알림 연동 코드를 추가할 수 있습니다.
else:
print(f"현재 가격은 매수/매도 조건 범위 내에 있습니다. (매수: {BUY_PRICE:,}KRW, 매도: {SELL_PRICE:,}KRW)")
# ... (이전 if __name__ == "__main__": 부분은 아래 4단계에서 수정) ...이제 check_price_and_alert() 함수가 현재 가격을 가져와 여러분이 설정한 BUY_PRICE와 SELL_PRICE를 기준으로 알림 메시지를 출력합니다. 여러분의 투자 전략에 맞춰 목표 가격을 자유롭게 조절해보세요.
4단계: 자동 실행 스케줄링 및 봇 실행
만들어진 알림 로직이 주기적으로 실행되도록 schedule 라이브러리를 사용하여 자동화를 구현합니다. main.py의 if __name__ == "__main__": 부분을 다음과 같이 수정합니다.
# ... (이전 코드 생략) ...
if __name__ == "__main__":
print("코인 가격 모니터링 봇을 시작합니다...")
print(f"모니터링 코인: {TICKER}")
print(f"매수 목표 가격: {BUY_PRICE:,} KRW")
print(f"매도 목표 가격: {SELL_PRICE:,} KRW")
print("-" * 50)
# 10초마다 가격 체크 함수 실행
schedule.every(10).seconds.do(check_price_and_alert) # 10초마다 함수 실행
while True:
schedule.run_pending()
time.sleep(1) # CPU 과부하 방지를 위해 1초 대기schedule.every(10).seconds.do(check_price_and_alert) 코드는 check_price_and_alert 함수를 10초마다 실행하도록 예약합니다. while True: 루프 안에서 schedule.run_pending()은 예약된 작업이 있는지 확인하고 실행하며, time.sleep(1)은 CPU 과부하를 방지하기 위해 1초간 대기하는 역할을 합니다.
5단계: (선택) 알림 기능 확장 – 텔레그램 연동
현재 알림은 콘솔에 출력되지만, 실제 사용에서는 텔레그램, 슬랙 또는 이메일 등으로 알림을 받는 것이 훨씬 유용합니다. 텔레그램 알림을 연동하는 것은 매우 간단하며, python-telegram-bot 라이브러리를 활용할 수 있습니다. 예를 들어, check_price_and_alert 함수 내의 print 문 대신 텔레그램 봇을 통해 메시지를 전송하는 코드를 추가할 수 있습니다.
# 텔레그램 연동 예시 (추가 설치 필요: pip install python-telegram-bot)
# import telegram
# async def send_telegram_message(message):
# bot = telegram.Bot(token='YOUR_TELEGRAM_BOT_TOKEN')
# await bot.send_message(chat_id='YOUR_CHAT_ID', text=message)
# if current_price <= BUY_PRICE:
# message = f"🚨🚨 매수 알림! {TICKER} 가격이 {BUY_PRICE:,} KRW 이하입니다. (현재: {current_price:,} KRW)"
# print(message)
# # asyncio.run(send_telegram_message(message)) # 비동기 함수 호출 예시이 부분은 본 튜토리얼의 ‘5분 완성’ 범위를 넘어서므로, 코드 예시만 참고하시고 필요하다면 별도로 학습하여 적용해보시길 바랍니다.
결과 확인
이제 여러분이 작성한 봇을 실행하여 결과를 확인해봅시다. 터미널 또는 명령 프롬프트에서 프로젝트 폴더로 이동한 후 다음 명령어를 입력하세요.
python main.py명령어를 실행하면, 봇이 시작되었다는 메시지와 함께 10초마다 현재 코인 가격 정보가 콘솔에 출력될 것입니다. 설정한 BUY_PRICE 또는 SELL_PRICE 조건에 도달하면, 해당 알림 메시지가 강조되어 나타나는 것을 확인할 수 있습니다.
예상 출력:
코인 가격 모니터링 봇을 시작합니다...
모니터링 코인: KRW-BTC
매수 목표 가격: 40,000,000 KRW
매도 목표 가격: 45,000,000 KRW
--------------------------------------------------
[2026-03-15 10:00:00] KRW-BTC 현재 가격: 42,500,000 KRW
현재 가격은 매수/매도 조건 범위 내에 있습니다. (매수: 40,000,000KRW, 매도: 45,000,000KRW)
[2026-03-15 10:00:10] KRW-BTC 현재 가격: 40,100,000 KRW
현재 가격은 매수/매도 조건 범위 내에 있습니다. (매수: 40,000,000KRW, 매도: 45,000,000KRW)
[2026-03-15 10:00:20] KRW-BTC 현재 가격: 39,950,000 KRW
🚨🚨 매수 알림! KRW-BTC 가격이 40,000,000 KRW 이하입니다. (현재: 39,950,000 KRW)
[2026-03-15 10:00:30] KRW-BTC 현재 가격: 45,100,000 KRW
🔥🔥 매도 알림! KRW-BTC 가격이 45,000,000 KRW 이상입니다. (현재: 45,100,000 KRW)
...봇이 정상적으로 작동하는 것을 확인했다면 성공입니다! Ctrl+C를 눌러 봇을 종료할 수 있습니다.
마무리: 실전 적용 및 발전 방향
여러분은 이제 파이썬 API를 활용하여 실시간 코인 가격을 모니터링하고 조건부 알림을 보내는 자신만의 봇을 성공적으로 구축했습니다. 단 5분 만에 실용적인 자동화 시스템의 핵심을 구현한 것입니다.
이 봇은 시작점일 뿐입니다. 다음 단계로 나아가려면 다음과 같은 기능들을 추가해볼 수 있습니다.
- 다중 코인 모니터링: 여러 개의 코인을 동시에 모니터링하도록 확장합니다.
- 실제 주문 연동: 업비트 API의 주문 기능을 사용하여 조건 충족 시 자동으로 매수/매도 주문을 실행합니다. (이 경우 API 키 권한 및 보안에 더욱 유의해야 합니다.)
- 데이터 저장 및 분석: 조회된 가격 데이터를 데이터베이스나 파일에 저장하여 추후 분석에 활용합니다.
- 고급 알림 시스템: 텔레그램, 슬랙, 이메일 외에도 다양한 알림 채널을 연동합니다.
- 오류 처리 및 로깅: 네트워크 오류나 API 호출 실패 시에도 안정적으로 작동하도록 예외 처리를 강화하고, 로깅 기능을 추가하여 봇의 작동 상태를 기록합니다.
- 백테스팅: 과거 데이터를 기반으로 자신의 전략이 얼마나 효과적인지 테스트하는 기능을 추가합니다.
오늘 배운 내용은 모든 자동화 시스템 구축의 핵심 원리입니다. 이 지식을 바탕으로 여러분의 아이디어를 현실로 만들어나가시길 바랍니다. 궁금한 점은 언제든지 질문해주세요!

