본문 바로가기
카테고리 없음

binance 대신 bitget 거래소를 사용할 경우 김프알리미

by 아재데이타사이언티스트 2025. 2. 10.

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분마다 자동 실행

🔹 실행 방법

  1. your_email@gmail.com 및 recipient_email@gmail.com을 본인의 이메일로 변경
  2. 특정 퍼센트(예: 5%) 초과 시 자동 이메일 발송
  3. 실행하면 Bitget + 업비트 데이터를 실시간 비교하여 김치프리미엄을 감지하고 이메일로 알려줍니다! 🚀🔥