본문 바로가기
잡스런 기쁨

포지션, 거래량 모니터링 텔레그램 봇

by Maven S 2025. 9. 3.
반응형

이 코드는 텔레그램-바이낸스 선물 봇으로, 바이낸스 선물 거래소의 포지션, 거래량 급증, 실현 PNL, 솔라나 블록체인 에폭 등을 모니터링하고 텔레그램을 통해 알림을 보내는 봇입니다. 아래는 이 봇을 설정하고 사용하는 방법에 대한 설명입니다.


1. 봇 사용 준비

봇을 실행하기 위해 다음 단계를 따라야 합니다.

1.1. 필수 환경 설정

  1. 환경 변수 설정 (.env 파일 생성):
    • 프로젝트 디렉토리에 .env 파일을 생성합니다.
    • 아래와 같이 필수 환경 변수를 입력합니다:
      TELEGRAM_TOKEN=your_telegram_bot_token
      TELEGRAM_USER_ID=your_telegram_user_id
      BINANCE_API_KEY=your_binance_api_key
      BINANCE_API_SECRET=your_binance_api_secret
      • TELEGRAM_TOKEN: 텔레그램 BotFather에서 발급받은 봇 토큰.
      • TELEGRAM_USER_ID: 텔레그램에서 사용자의 고유 ID (숫자 형식).
      • BINANCE_API_KEYBINANCE_API_SECRET: 바이낸스 선물 계정의 API 키와 시크릿 키.
  2. 필요한 Python 패키지 설치:
    • 아래 명령어를 사용하여 필요한 라이브러리를 설치합니다:
      pip install python-telegram-bot python-dotenv requests websockets tenacity pytz
    • 설치해야 할 패키지:
      • python-telegram-bot: 텔레그램 API와 통신.
      • python-dotenv: 환경 변수 로드.
      • requests: HTTP 요청.
      • websockets: 바이낸스 웹소켓 연결.
      • tenacity: API 재시도 로직.
      • pytz: 시간대 변환.
  3. 설정 파일 (config.json):
    • 봇 실행 시 config.json 파일이 자동으로 생성됩니다. 이 파일에는 거래량 급증 알림 배수 설정이 저장됩니다.
    • 기본적으로 BTCUSDTETHUSDT에 대해 2.0배로 설정됩니다.
    • 예시 config.json:
      {
          "VOLUME_SPIKE_MULTIPLIERS": {
              "BTCUSDT": 2.0,
              "ETHUSDT": 2.0
          }
      }

1.2. 봇 실행

  1. bot.py 파일을 프로젝트 디렉토리에 저장합니다.
  2. 터미널에서 다음 명령어를 실행하여 봇을 시작합니다:
    python bot.py
  3. 봇이 성공적으로 시작되면 텔레그램으로 "🤖 봇이 시작되었습니다!" 메시지를 받습니다.

2. 봇 사용 방법

봇은 텔레그램에서 명령어를 통해 상호작용합니다. 아래는 사용 가능한 명령어와 사용법입니다.

2.1. 명령어 목록

봇은 다음과 같은 명령어를 지원합니다. 텔레그램 채팅에서 명령어를 입력하면 됩니다.

  1. /start:
    • 봇을 시작하고 환영 메시지를 표시합니다.
    • 예: /start
    • 응답: "안녕하세요! /help 를 입력하여 사용 가능한 명령어를 확인하세요."
  2. /help:
    • 사용 가능한 명령어 목록과 설명을 표시합니다.
    • 예: /help
    • 응답: 사용 가능한 명령어 목록.
  3. /status:
    • 봇의 현재 상태를 확인합니다. 마지막 API 호출 시간, 모니터링 중인 포지션 수, 거래량 급증 설정, 잔고 등을 포함합니다.
    • 예: /status
    • 응답:
      *봇 상태 보고서*
      마지막 API 호출 성공 시간:
        솔라나 에폭: 2025-09-03 15:00:00
        포지션: 2025-09-03 15:00:00
        거래량 급증: 없음
        UPNL 알림: 없음
      모니터링 중인 포지션 수: 1
        BTCUSDT: LONG 0.1000
      거래량 급증 알림 배수:
        BTCUSDT: 2.0x
        ETHUSDT: 2.0x
      잔고 USDⓈ(PNL 계산용): 1000.0000
      2025-09-03 15:24:00 KST
  4. /epoch:
    • 솔라나 블록체인의 현재 에폭 정보(진행률, 남은 시간 등)를 표시합니다.
    • 예: /epoch
    • 응답:
      *솔라나 현재 에폭: 123*
      진행률: 50.00% (500000/1000000 슬롯)
      다음 에폭까지 남은 시간:
      *2 days, 3:45:12*
  5. /volume:
    • 거래량 급증 알림 배수를 설정하거나 현재 설정을 확인합니다.
    • 사용법:
      • 현재 설정 확인: /volume
      • 배수 설정: /volume [심볼] [배수]
    • 예:
      • /volume: 현재 설정된 거래량 급증 배수를 표시.
        *거래량 급증 알림 배수* 🚀
        *BTCUSDT*: 2.0x
        *ETHUSDT*: 2.0x
        사용법: `/volume [심볼] [배수]`
        (예시: `/volume BTCUSDT 3.5`)
      • /volume BTCUSDT 3.5: BTCUSDT의 거래량 급증 배수를 3.5배로 설정.
        *거래량 급증 알림 배수* 🚀
        *BTCUSDT*의 배수가 *3.5x*로 설정되었습니다.
  6. /positions:
    • 현재 바이낸스 선물 포지션과 지갑 잔고를 표시합니다.
    • 예: /positions
    • 응답:
    • *USDⓈ-M 선물 지갑 잔고* UPNL: +10.0000 (+1.00%) 증거금: 1010.0000 USDⓈ: 1000.0000 *USDⓈ-M 선물 현재 포지션* ─ *BTCUSDT* (롱(LONG) 10x) 사이즈: 0.1000 진입가: 50000.0000 현재가: 51000.0000 PNL(ROI%): +100.0000 (+2.00%) 청산가: 45000.0000
  7. /pnl:
    • 특정 기간의 실현 PNL(손익)을 계산하여 표시합니다.
    • 사용법:
      • /pnl: 최근 24시간의 PNL.
      • /pnl 7d: 최근 7일의 PNL.
      • /pnl 1m: 최근 1개월의 PNL.
      • /pnl 240101: 2024년 1월 1일의 PNL.
      • /pnl 240101 240107: 2024년 1월 1일부터 7일까지의 PNL.
      • /pnl BTCUSDT: BTCUSDT의 최근 24시간 PNL.
      • /pnl 7d BTCUSDT: BTCUSDT의 최근 7일 PNL.
      • /pnl 240101 240107 BTCUSDT: BTCUSDT의 2024년 1월 1일부터 7일까지의 PNL.
    • 예: /pnl 7d BTCUSDT
      • 응답:
        🐋 *최근 7d (BTCUSDT) 실현 PNL 보고서*
        ─
        기간: 25/08/27 15:24 ~ 25/09/03 15:24
        총 실현 PNL: +50.00 USDⓈ
        청산 포지션: 5회
        거래당 평균 PNL: +10.00 USDⓈ

2.2. 자동 알림 기능

봇은 다음 상황에서 자동으로 텔레그램 알림을 보냅니다:

  1. 포지션 변경:
    • 새로운 포지션 진입, 포지션 청산, 포지션 크기 변경 시 알림.
    • 예: "🛫 신규 포지션: BTCUSDT (롱(LONG)) - 사이즈: 0.1000"
  2. 미실현 손익(UPNL) 변동:
    • UPNL이 잔고의 1% 이상 변동 시 알림(1시간 쿨다운 적용).
    • 예: "🐳 UPNL 알림! 현재 UPNL: +10.0000 USDⓈ (+1.00%)"
  3. 거래량 급증:
    • 설정된 배수(예: 2.0x)를 초과하는 거래량 급증 감지 시 알림(10분 쿨다운 적용).
    • 예: "🔥 BTCUSDT 거래량 급증! 현재 5분 거래량: 1,000,000 USDⓈ"
  4. 주기적 포지션 보고:
    • 1시간마다 열린 포지션이 있을 경우 현재 포지션 상태를 보고.
  5. API 오류:
    • API 호출 실패 시 경고 메시지 전송.
    • 예: "🚨 API 오류 알림! 포지션 보고서 생성 실패"

3. 추가 주의사항

  • 시간대: 모든 시간은 KST(한국 표준시)로 표시됩니다.
  • 쿨다운: 거래량 급증(10분)과 UPNL(1시간) 알림에는 쿨다운 기간이 적용되어 과도한 알림을 방지합니다.
  • 유효한 심볼: /volume 또는 /pnl 명령어에서 사용하는 심볼은 바이낸스 선물 거래소에서 지원하는 심볼이어야 합니다(예: BTCUSDT, ETHUSDT).
  • 오류 처리: API 호출 실패 시 봇은 자동으로 재시도하며, 실패가 지속되면 텔레그램으로 경고 메시지를 보냅니다.
  • 종료: 봇을 종료하려면 실행 중인 프로세스를 종료(Ctrl+C)하면 됩니다. 종료 시 모든 백그라운드 태스크가 안전하게 정리됩니다.

4. 예시 시나리오

  1. 봇 시작:
    • .env 파일을 설정하고 python bot.py를 실행.
    • 텔레그램에서 "/start" 입력 후 "/help"로 명령어 확인.
  2. 포지션 확인:
    • "/positions"를 입력하여 현재 포지션과 잔고 확인.
  3. 거래량 급증 알림 설정:
    • "/volume BTCUSDT 3.0"를 입력하여 BTCUSDT의 거래량 급증 임계값을 3배로 설정.
  4. PNL 확인:
    • "/pnl 7d"를 입력하여 최근 7일간의 실현 PNL 확인.
  5. 솔라나 에폭 확인:
    • "/epoch"를 입력하여 솔라나 블록체인 에폭 정보 확인.

5. 문제 해결

  • 봇이 응답하지 않음:
    • .env 파일의 TELEGRAM_TOKENTELEGRAM_USER_ID가 올바른지 확인.
    • 로그(bot.py 실행 시 콘솔 출력)를 확인하여 오류 메시지 점검.
  • API 오류:
    • 바이낸스 API 키와 시크릿이 올바른지, 선물 계정에 접근 권한이 있는지 확인.
    • 네트워크 연결 상태 확인.
  • 잘못된 심볼 입력:
    • /volume 또는 /pnl 명령어에서 올바른 바이낸스 선물 심볼을 사용했는지 확인(예: BTCUSDT).
  • 설정 변경 안 됨:
    • config.json 파일이 쓰기 가능한지 확인(파일 권한 문제).

이 설명을 통해 봇을 쉽게 설정하고 사용할 수 있습니다.추가 질문이 있으면 AI에게 언제든지 물어보세요! 😊

bot.py
0.06MB

반응형