joungmin 6e0c4508fa refactor: MVC 구조 분리 + 미사용 파일 archive 정리
- tick_trader.py를 Controller로 축소, 로직을 3개 모듈로 분리:
  - core/signal.py: 시그널 감지, 지표 계산 (calc_vr, calc_atr, detect_signal)
  - core/order.py: Upbit 주문 실행 (매수/매도/취소/조회)
  - core/position_manager.py: 포지션 관리, DB sync, 복구, 청산 조건
- type hints, Google docstring, 구체적 예외 타입 적용
- 50줄 초과 함수 분리 (process_signal, restore_positions)
- 미사용 파일 58개 archive/ 폴더로 이동
- README.md 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:46:47 +09:00

upbit-trader

Upbit WebSocket 기반 20초봉 자동매매 봇. LLM(Gemini 2.5 Flash) 매수 판단 + 트레일링 스탑 청산.

프로젝트 구조

upbit-trader/
  STRATEGY.md              -- 전략 상세 문서
  ecosystem.config.js      -- PM2 프로세스 설정
  backtest_march.py        -- 3월 백테스트 시뮬레이션

  core/                    -- Model / Service 레이어
    signal.py              -- 시그널 감지 (양봉 + VOL + 사전필터 3종)
    order.py               -- Upbit 주문 실행 (매수/매도/취소/조회)
    position_manager.py    -- 포지션 관리, 청산 조건, DB sync, 복구
    llm_advisor.py         -- LLM 매수 어드바이저 (OpenRouter + tool calling)
    notify.py              -- 텔레그램 알림

  daemons/                 -- Controller / 데몬
    tick_trader.py         -- 주력 트레이더 (WebSocket -> 봉 집계 -> 매매)
    tick_collector.py      -- price_tick + 1분봉 Oracle 수집
    context_collector.py   -- 종목 컨텍스트 수집 (뉴스 + 가격 통계)
    state_sync.py          -- 포지션 상태 동기화

  archive/                 -- 미사용 파일 보관

매매 전략 요약

진입

  1. 20초봉 확정 시 시그널 감지 (양봉 + 거래량 5x + 거래대금 5M+)
  2. 사전 필터: 횡보(15봉 변동 < 0.3%), 고점(30분 구간 90%+), 연속양봉(2봉+)
  3. LLM(Gemini 2.5 Flash) 매수 판단 -> 현재가 지정가 매수

청산

조건
트레일링 스탑 고점 대비 -1.5% (최소 수익 +0.5%)
손절 -2%
타임아웃 4시간

운용 설정

항목
감시 종목 10개 (ETH, XRP, SOL, DOGE, SIGN, BARD, KITE, CFG, SXP, ARDR)
총 예산 1,000,000원
최대 포지션 5개
종목당 투자 200,000원

기술 스택

구성 기술
거래소 Upbit API (REST + WebSocket)
DB Oracle ADB
LLM Gemini 2.5 Flash via OpenRouter
알림 Telegram Bot API
뉴스 SearXNG (self-hosted)
프로세스 PM2

실행

# 환경 설정
cp .env.example .env
# .env에 API 키 입력

# PM2로 실행
pm2 start ecosystem.config.js

# 개별 실행
.venv/bin/python3 daemons/tick_trader.py

PM2 데몬

이름 파일 설명
tick-trader daemons/tick_trader.py 주력 트레이더
tick-collector daemons/tick_collector.py 가격 데이터 수집
context-collector daemons/context_collector.py 종목 컨텍스트 수집
state-sync daemons/state_sync.py 포지션 상태 동기화

백테스트 결과 (2026-03-01~06)

항목
거래 수 48건
승률 52.1%
총 PNL +17,868원 (+17.9%)
평균 PNL +1.22%

주의사항

  • .env 변경 후 PM2 재시작 시 pm2 restart --update-env 필수
  • 로그: /tmp/tick_trader.log
Description
Upbit 자동 트레이딩 봇 - Strategy C + 트레일링 스탑
Readme 757 KiB
Languages
Python 99.8%
JavaScript 0.2%