import requests
import schedule
import smtplib
from email.mime.text import MIMEText
from time import sleep
# 🔹 1. 거래소 API를 통해 가격 가져오기 (Bitget 사용)
def get_usdt_price():
try:
# 업비트 USDT/KRW 가격 가져오기
upbit_url = "https://api.upbit.com/v1/ticker?markets=USDT-KRW"
upbit_price = requests.get(upbit_url).json()[0]["trade_price"]
# Bitget USDT/USD 가격 가져오기
bitget_url = "https://api.bitget.com/api/v2/market/ticker?symbol=USDTUSD_SPBL"
bitget_response = requests.get(bitget_url).json()
if 'data' in bitget_response:
bitget_price = float(bitget_response["data"]["last"]) # Bitget의 마지막 체결 가격
else:
bitget_price = None
return upbit_price, bitget_price
except Exception as e:
print(f"데이터 가져오기 오류: {e}")
return None, None
# 🔹 2. 환율 정보 가져오기
def get_exchange_rate():
try:
url = "https://api.exchangerate-api.com/v4/latest/USD"
response = requests.get(url).json()
return response["rates"]["KRW"]
except Exception as e:
print(f"환율 가져오기 오류: {e}")
return None
# 🔹 3. 김치 프리미엄 계산
def calculate_premium():
upbit_price, bitget_price = get_usdt_price()
exchange_rate = get_exchange_rate()
if None in (upbit_price, bitget_price, exchange_rate):
return None
premium = ((upbit_price - (bitget_price * exchange_rate)) / (bitget_price * exchange_rate)) * 100
return premium
# 🔹 4. 이메일 전송
def send_email(premium):
sender_email = "your_email@gmail.com"
sender_password = "your_app_password"
recipient_email = "recipient_email@gmail.com"
subject = "🚨 김치 프리미엄 알림!"
message = f"현재 김치 프리미엄이 {premium:.2f}%를 초과했습니다! 거래를 고려해보세요."
msg = MIMEText(message)
msg["Subject"] = subject
msg["From"] = sender_email
msg["To"] = recipient_email
try:
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.login(sender_email, sender_password)
server.sendmail(sender_email, recipient_email, msg.as_string())
server.quit()
print("📧 이메일 전송 완료!")
except Exception as e:
print(f"이메일 전송 실패: {e}")
# 🔹 5. 특정 김치 프리미엄 이상일 때 이메일 알림
def check_premium():
premium = calculate_premium()
if premium is not None:
print(f"현재 김치 프리미엄: {premium:.2f}%")
if premium > 5: # 5% 이상이면 이메일 전송
send_email(premium)
# 🔹 6. 10분마다 체크하도록 스케줄링
schedule.every(10).minutes.do(check_premium)
print("🔄 김치 프리미엄 모니터링 시작!")
while True:
schedule.run_pending()
sleep(60)
변경된 점
✅ Bitget API 사용:
- 바이낸스 대신 Bitget의 USDT/USD 가격을 가져옴
- Bitget API에서 마지막 체결 가격(last)을 사용
✅ 기타 사항:
- 업비트 USDT/KRW 가격과 환율을 비교하여 김치 프리미엄 계산
- 특정 퍼센트 이상일 때 이메일 알림 전송
- 10분마다 자동 실행
🔹 실행 방법
- your_email@gmail.com 및 recipient_email@gmail.com을 본인의 이메일로 변경
- 특정 퍼센트(예: 5%) 초과 시 자동 이메일 발송
- 실행하면 Bitget + 업비트 데이터를 실시간 비교하여 김치프리미엄을 감지하고 이메일로 알려줍니다! 🚀🔥