알람봇 코드 완전 공개 — 전 알트 스캔 + 신호 감지 로직 🔍 무한 알트 텔레그램 알람봇 v8.1.1 — 3편

무한 알트 텔레그램 알람봇 v8.1.1 3편 전 알트 스캔 신호 감지 코드 커버

💡 이번 편 한 줄 요약
바이비트 전 알트코인을 1분마다 자동 스캔하고, 조건에 맞으면 텔레그램으로 알람을 보내는 핵심 코드를 공개합니다.

👉 ← 2편: VPS 파이썬 환경 세팅 — SSH부터 패키지까지 복붙 완성

⚠️ 선물 거래는 원금 전체를 잃을 수 있는 고위험 투자입니다. 모든 판단과 결과의 책임은 본인에게 있습니다.


📌 코드 구조 한 눈에 보기

블록 역할
환경변수 로드.env에서 API키·토큰 불러오기
전 종목 리스트 조회Bybit API → USDT 선물 전 알트 목록
시세·거래량 조회종목별 현재가·거래량 수집
신호 감지 로직거래량 급증·가격 변동률 조건 판단
중복 알람 방지같은 종목 연속 알람 차단 (5분)
텔레그램 발송조건 충족 종목 알람 전송
스케줄 반복1분마다 전체 사이클 반복

전체 코드 (bot.py) — 복붙 후 바로 실행

아래 코드를 VPS의 ~/alt-alarm-bot/bot.py 파일에 복붙하세요.

📄 bot.py — 전체 코드 (복붙용)
import os import time import asyncio from dotenv import load_dotenv from pybit.unified_trading import HTTP from telegram import Bot # ── 환경변수 로드 ────────────────────── load_dotenv() BYBIT_API_KEY = os.getenv("BYBIT_API_KEY") BYBIT_API_SECRET = os.getenv("BYBIT_API_SECRET") TELEGRAM_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") CHAT_ID = os.getenv("TELEGRAM_CHAT_ID") # ── 클라이언트 ───────────────────────── session = HTTP(api_key=BYBIT_API_KEY, api_secret=BYBIT_API_SECRET) bot = Bot(token=TELEGRAM_TOKEN) # ── 설정값 (여기서 조건 조정) ────────── VOLUME_SPIKE_RATIO = 3.0 # 거래량 N배 이상 급증 PRICE_CHANGE_PCT = 5.0 # 가격 변동률 N% 이상 SCAN_INTERVAL = 60 # 스캔 주기 (초) COOLDOWN_SECONDS = 300 # 재알람 대기 시간 (초) last_alerted = {} def get_all_symbols(): result = session.get_instruments_info(category="linear") return [ item["symbol"] for item in result["result"]["list"] if item["symbol"].endswith("USDT") and item["status"] == "Trading" ] def get_ticker(symbol): result = session.get_tickers(category="linear", symbol=symbol) data = result["result"]["list"][0] return { "symbol" : symbol, "last_price": float(data["lastPrice"]), "price_pct" : float(data["price24hPcnt"]) * 100, "volume_1h" : float(data["volume24h"]), } def is_signal(ticker, prev_volumes): symbol = ticker["symbol"] price_ok = abs(ticker["price_pct"]) >= PRICE_CHANGE_PCT vol_ok = False if symbol in prev_volumes and prev_volumes[symbol] > 0: ratio = ticker["volume_1h"] / prev_volumes[symbol] vol_ok = ratio >= VOLUME_SPIKE_RATIO return price_ok or vol_ok def is_cooldown(symbol): if symbol not in last_alerted: return False return (time.time() - last_alerted[symbol]) < COOLDOWN_SECONDS async def send_alert(ticker): symbol = ticker["symbol"] price = ticker["last_price"] pct = ticker["price_pct"] arrow = "📈" if pct >= 0 else "📉" msg = ( f"🚨 [{symbol}] 신호 감지\n" f"{arrow} 현재가: {price:,.6f} ({pct:+.2f}%)\n" f"📊 24h 거래량: {ticker['volume_1h']:,.0f}\n" f"⏰ {time.strftime('%Y-%m-%d %H:%M:%S')}\n" f"🔗 https://www.bybit.com/trade/usdt/{symbol}" ) await bot.send_message(chat_id=CHAT_ID, text=msg) last_alerted[symbol] = time.time() print(f"[ALERT] {symbol} | {pct:+.2f}%") async def scan(): print(f"[SCAN] {time.strftime('%H:%M:%S')} 스캔 시작") symbols = get_all_symbols() prev_volumes = {sym: 0 for sym in symbols} while True: for symbol in symbols: try: ticker = get_ticker(symbol) if is_signal(ticker, prev_volumes) and not is_cooldown(symbol): await send_alert(ticker) prev_volumes[symbol] = ticker["volume_1h"] except Exception as e: print(f"[ERROR] {symbol}: {e}") await asyncio.sleep(0.1) print(f"[DONE] {len(symbols)}개 스캔 완료") await asyncio.sleep(SCAN_INTERVAL) if __name__ == "__main__": asyncio.run(scan())

설정값 — 여기만 바꾸면 됩니다

변수 기본값 의미
VOLUME_SPIKE_RATIO3.0이전 대비 거래량 3배 이상이면 신호
PRICE_CHANGE_PCT5.024h 가격 변동 ±5% 이상이면 신호
SCAN_INTERVAL6060초마다 전체 스캔 반복
COOLDOWN_SECONDS300같은 종목 5분간 재알람 차단

신호 감지 조건 커스텀

목적 수정 방법
알람을 더 줄이고 싶다PRICE_CHANGE_PCT 높이기 (예: 7.0), VOLUME_SPIKE_RATIO 높이기
알람을 더 많이 받고 싶다PRICE_CHANGE_PCT 낮추기 (예: 3.0)
두 조건 모두 충족 시만return price_ok or vol_okreturn price_ok and vol_ok

봇 실행 명령어

단계 명령어
폴더 이동cd ~/alt-alarm-bot
테스트 실행python3 bot.py
pm2 상시 실행pm2 start bot.py --name alt-alarm-bot --interpreter python3
재부팅 자동 등록pm2 startup && pm2 save

자주 묻는 에러

에러 원인 해결
InvalidAPIKeyErrorAPI키 오타·.env 경로 문제.env 파일 위치·키 값 재확인
Chat not foundChat ID 오류1편 Chat ID 확인 절차 재실행
RateLimitErrorAPI 호출 너무 빠름asyncio.sleep(0.1)0.2로 변경
알람이 너무 많다조건이 느슨함PRICE_CHANGE_PCT 높이기
알람이 전혀 없다조건이 엄격하거나 쿨다운 중PRICE_CHANGE_PCT 낮추기, 로그 확인

🎁 봇 코드 무료 배포 예정

v8.1.1 전체 코드를 시리즈 구독자에게 무료로 배포합니다.
구독 + 관심 댓글 남겨두시면 배포 시 바로 알려드립니다.

👉 카카오 오픈채팅 참여하기


📌 → 4편: 텔레그램 알람 메시지 포맷 꾸미기

"종목·등락률·거래량·링크를 한 눈에 — 알람 받자마자 판단할 수 있는 포맷으로 업그레이드합니다."


💌 아빠가 아들에게

아들아, 2026년엔 코인 시장에서 신호를 잡으려면 이렇게 코드를 직접 짜서 서버에 올려야 했어. 400개 넘는 종목을 사람이 눈으로 보는 건 불가능하니까, 기계한테 대신 보라고 시킨 거지. 어떤 시대든, 도구를 직접 만들어 쓰는 사람이 결국 앞서 나간다는 건 변하지 않더라. 🔍


※ 본 콘텐츠는 정보 제공 목적이며 투자 권유가 아닙니다. 투자의 최종 책임은 투자자 본인에게 있습니다.

댓글

이 블로그의 인기 게시물

Trading Heritage: 얼티메이트 스나이퍼(Ultimate Sniper) 개발 비망록

알트코인 알람봇, 10분 만에 이해하기 🚨 무한 알트 텔레그램 알람봇 v8.1.1 — 속성편

[자동매매 1편] 준비물 3가지 + 바이비트 API 키 발급, 5분이면 끝나요