IT와 보안 그 어디 쯤

업비트 자동매매 프로그램, 1년간 가격및 거래량 모음

깊음위에 2025. 8. 30. 11:31
반응형

업비트 코인 자동 매매 프로그램을 작성했습니다. 

AI 도움도 많이 받았고, 실제 전략도 구성해 봤습니다. 

수익이 나기도 하고, 하락장에서 손실이 발생하기도 합니다. 

꾸준히 자동 매매가 이뤄지고 있고, 어쩌다 운이 좋아서 계속 상승장이라면, 꽤 그럴듯한 수익이 날 것도 기대합니다. 

 

파이썬으로 작성했고, 심각하게 모듈화 했다가, 이게 그럴만한 프로그램은 아니라는 결론에 이르러서, 

그냥 파일 하나 짜리로 퉁쳤습니다. 

설정파일은 불러오도록 했어요.  API 키라던지, 시크릿 같은 것들.. 

아래 사용법과 리드미 파일입니다. 

맨 하단에 구매 링크를 걸었어요. 원래 GUI까지 만들어서 좀 더 비싸게 팔려고 했는데, 시간도 없고,  GUI디자인도 만만치 않아서 그냥 간단한 실행하고, 텔레그램 연동으로 상태확인, 거래중지, 시작, 등등 만 연동해서 내놨습니다. 

프로그램 자체는 참고용으로 보면 좋을거같고 (당장 실행해도 물론 자동거래, 코인선택 다 되지요.) 백테스트를 위한 1년치 데이터를 이틀동안 모았습니다. 전체 코인 데이터인데, 이건 부록으로 함께 올렸으니 파일로 백테스트를 해보시면 좋을 거 같습니다. 

가격에  0 이라고 입력하시면 무료로 받을 수 있습니다. 10이라고 쓰시면 10달러에 받으실 수 있구요... 

ccp2025v3_rev5 – 자동매매 봇 (Upbit + Telegram)

 

Coin auto-trading Program. ( Upbit )

🚀 CCP2025v3 – Automated Crypto Trading Bot (Upbit + Telegram)Trade smarter, not harder.CCP2025v3 (CashCopy2025v3) is a fully automated cryptocurrency trading bot designed for the Upbit trading platform, built with professional-grade strategies and Tel

joshsmartlife.gumroad.com

 

이 저장소는 업비트 KRW 마켓의 시세/캔들 데이터를 비동기로 수집하고, 시장 추세(강세/약세)를 판별해 시간대별 매수 제한, 추세·반등 필터, RSI/MACD 기반 익절·손절 로직을 적용해 거래하는 텔레그램 제어형 자동매매 프로그램입니다. 텔레그램 명령으로 시작/중지/상태/전량청산/개별매도를 수행합니다.


주요 기능

  • 비동기 안전 호출: aiohttp + 세마포어(동시 10개) + 지수 백오프 재시도
  • JWT 인증: 업비트 개인키로 주문/계정 API 호출
  • 시장 추세 판별: BTC 도미넌스, Top10 상승비, 평균 변동률로 스코어링 → bull / bear / neutral
  • 전략
    • Bull 전략: 1분봉 후보 + 일봉(5일선/RSI(14)/MACD) 교차 필터, 당일 급등 추종 회피
    • Bear 전략: 15분봉 볼린저 하단 근접 + 거래량 급증 + RSI 30 하향→상향 돌파 반등 매수
    • 공통 매도: 손절(≈ -3.5%), 익절(≥ +2.5~3% 조건) + RSI/MACD 둔화 신호 활용
  • 시간대 매수 제한(Asia/Seoul)
    • 오전 08:00~12:00, 오후 14:00~23:00: 매수 금지
  • 자산 리포트: 보유수량/평단/현재가/수익률/총 평가자산 (텔레그램 Markdown)

요구사항

  • Python 3.10+ (권장 3.11)
  • 업비트 API 키(Access/Secret)
  • 텔레그램 봇 토큰 & 채팅 ID
  • OS: macOS/Linux/WSL 권장

필수 패키지

pip install \
  python-dotenv pyjwt requests aiohttp pandas python-telegram-bot==20.* \
  ta

python-telegram-bot v20 이상(Async 기반)을 사용합니다.


설치 & 실행

1) 저장소 준비

git clone <repo-url>
cd <repo-dir>
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -U pip
pip install python-dotenv pyjwt requests aiohttp pandas python-telegram-bot==20.* ta

2) 환경변수(.env) 작성

루트에 .env 파일을 만들고 아래처럼 입력하세요.

UPBIT_ACCESS_KEY=발급받은_액세스키
UPBIT_SECRET_KEY=발급받은_시크릿키
TELEGRAM_TOKEN=텔레그램_봇토큰
TELEGRAM_CHAT_ID=본인_채팅ID(또는 그룹ID)

텔레그램 Chat ID는 @userinfobot 또는 @RawDataBot 등으로 확인할 수 있습니다.

3) 실행

python ccp2025v3_rev5.py

실행 후 텔레그램에서 명령을 내립니다(아래 “명령어” 참고).


사용법 (텔레그램 명령어)

  • /start — 자동매매 시작
  • /stop — 자동매매 중지
  • /status — 보유현황 리포트(잔액/평단/현재가/수익률/총자산)
  • /zeroday — 전량 청산(KRW 외 전 종목 시장가 매도)
  • /sell BTC — 개별 종목 매도(예: BTC → KRW-BTC 시장가 매도)

봇은 폴링 방식으로 동작하며, 각 명령은 비동기 로직에 안전하게 연결됩니다.


동작 개요

1) 공통 인프라

  • API 호출 보호: async_safe_get/post 가 200/201 이외 상태 및 429에 대해 지수 백오프 재시도, 예외 로깅
  • JWT 생성: access_key, nonce, query_hash(SHA512), HS256 서명
  • 잔액 조회 캐싱 지향: 루프마다 중복 호출 최소화

2) 시장 추세 판별

  • KRW 마켓 Top50 시세 조회 → 24h 거래대금 기준 Top10 선정
  • BTC/ETH/XRP 거래대금 합 대비 BTC 비중(도미넌스)
  • Top10 상승 종목 비율, 평균 변동률
  • 가중 합산 스코어 ≥ 0.55 ⇒ bull, ≤ 0.35 ⇒ bear, 그 외 neutral

3) Bull 전략 (상승장)

  • 후보 스캔(1분봉, 50개 캔들)
    • 5MA ↗ 20MA 골든크로스
    • 거래량 스파이크(최근 10MA 대비 2배)
    • 양봉(시가 < 종가)
  • 일봉 필터
    • 최근 3일 수익률 합 ±3% 이내(과열/침체 회피)
    • 종가 > 5MA, 5MA 상승반전
    • RSI(14) 30 하향→상향 돌파
    • MACD > Signal(상승 교차)
  • 당일 급등 추종 회피
    • 일중 고점/시가 ≥ +10% & 현재가 ≥ 고점의 98% 근처 제외
  • 매수 금액
    • max(총자산의 10%, 10,000 KRW)를 상한으로 KRW 잔액 내에서 집행
    • 업비트 최소 주문금액 10,000 KRW 미만 시 스킵
  • 매도(15분봉 지표)
    • 손절: 현재가 ≤ 평단×0.965
    • 익절: 기본 +3% 내외, RSI ≥ 70 & MACD 디버전스 시 선제 익절

4) Bear 전략 (하락장 반등 매매)

  • 후보 스캔(15분봉, 30개 캔들)
    • 볼린저 하단(20MA-2σ) 근접 하회
    • 거래량 급증(최근 3봉 평균 대비 ≥ 1.5배)
    • RSI(14) 30 하향→상향 돌파
  • 매수/매도 규칙
    • 매수금액 산정은 Bull과 동일
    • 손절: 평단×0.965 하락 & 모멘텀 약화
    • 익절: 평단 대비 +2.5% 이상에서 이익 보호

5) 시간대 제한 (KST)

  • 08:00~12:00, 14:00~23:00: 매수 금지
  • 그 외 시간대 & 잔여 KRW ≥ 10,000원 일 때만 후보 탐색/매수

로깅/알림

  • logging.INFO 기본
  • 텔레그램 알림: 체결·익절·손절·유지 판단 등 주요 이벤트 메시지 전송

예시 실행 흐름

  1. /start → 루프 시작
  2. detect_market_trend() → bull/bear 확정
  3. 해당 전략의 매수 금지 시간대인지 확인
  4. 후보 스캔 → 필터 통과 종목 시장가/금액 지정 주문
  5. 보유 종목 손절/익절/유지 점검
  6. 60초 슬립 후 반복

보안·리스크 주의

  • 실거래 코드입니다. 소액/테스트로 충분히 검증 후 사용할 것
  • API 키는 .env에서만 관리하고, 저장소에 절대 커밋하지 말 것
  • 업비트 약관·API 정책·법규 준수
  • 슬리피지/호가 공백/급등락/단절로 기대와 다른 체결이 발생할 수 있음
  • 봇/네트워크/텔레그램 장애에 대비한 수동 차단 계획 권장

트러블슈팅

  • 401/unauthorized: JWT 생성 파라미터와 Secret Key 확인, 시계 오차 확인
  • 429/Too Many Requests: 호출 속도 과다. 기본적으로 재시도하지만, 전략 주기/스캔 폭을 조절
  • 주문 실패(금액): 업비트 최소 주문금액(10,000 KRW) 미만인지 확인
  • 텔레그램 미수신: 봇 토큰/Chat ID 확인, 봇이 채팅방 초대/권한 보유 여부 확인

개발 노트

  • 구조: execute_trading()(루프) → detect_market_trend() → bull_strategy()/bear_strategy()
  • 주문 방식:
    • 매수: KRW 금액 지정 (side=bid, ord_type=price)
    • 매도: 시장가 매도 (side=ask, ord_type=market)
  • 기술지표: ta 패키지 RSI/MACD, 롤링 MA, 표준편차(볼린저)

빠른 테스트(모의)

업비트 공식 모의는 제공되지 않습니다. 실체결을 피하려면:

  • 주문 함수(buy_coin, sell_coin)에서 POST 호출을 주석 처리하고 로그만 출력
  • 캔들/시세 API는 그대로 사용해 신호·리포트만 검증

라이선스

  • 개인적 학습/연구/내부 테스트 용도로 시작하는 것을 권장합니다. 상용 배포 시 반드시 관련 법규와 거래소 약관을 준수하세요.

파일

  • ccp2025v3_rev5.py — 메인 실행 스크립트(전략/루프/텔레그램 핸들러 포함)
  • 업비트 1년 거래 정보

부록: requirements.txt (선택)

python-dotenv
pyjwt
requests
aiohttp
pandas
python-telegram-bot==20.*
ta

 

반응형