Skip to content

Latest commit

Β 

History

History
103 lines (83 loc) Β· 4.55 KB

File metadata and controls

103 lines (83 loc) Β· 4.55 KB

πŸ“ˆ Auto Trading Bot (가상화폐 μžλ™λ§€λ§€ 봇)

μ—…λΉ„νŠΈ(Upbit) APIλ₯Ό ν™œμš©ν•œ 가상화폐 μžλ™λ§€λ§€ 및 포트폴리였 관리 μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

이 ν”„λ‘œμ νŠΈλŠ” 기술적 μ§€ν‘œ(RSI, 이동평균선, λ³Όλ¦°μ € λ°΄λ“œ λ“±)λ₯Ό λ°”νƒ•μœΌλ‘œ 24μ‹œκ°„ μžλ™μœΌλ‘œ 가상화폐λ₯Ό λ§€λ§€ν•˜λŠ” 봇 μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
FastAPI λ°±μ—”λ“œμ—μ„œ μ•ˆμ •μ μΈ λ§€λ§€ 둜직과 λ°±κ·ΈλΌμš΄λ“œ μŠ€μΌ€μ€„λŸ¬κ°€ λ™μž‘ν•˜λ©°, React 기반 λŒ€μ‹œλ³΄λ“œλ₯Ό 톡해 μ‹€μ‹œκ°„ 수읡λ₯ κ³Ό λ§€λ§€ 체결 둜그λ₯Ό μ†μ‰½κ²Œ λͺ¨λ‹ˆν„°λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


✨ μ£Όμš” κΈ°λŠ₯

  • μžλ™ λ§€λ§€ μ•Œκ³ λ¦¬μ¦˜: pandas-taλ₯Ό ν™œμš©ν•œ 기술적 μ§€ν‘œ 계산 및 쑰건뢀 맀수/맀도 둜직 (RSI, λ³Όλ¦°μ € λ°΄λ“œ, μŠ€μΊ˜ν•‘ μž₯μ°©)
  • μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§: SSE(Server-Sent Events)λ₯Ό ν™œμš©ν•œ μ‹€μ‹œκ°„ 봇 μƒνƒœ 및 μ‹œμŠ€ν…œ 둜그(체결 λ‚΄μ—­, μ—λŸ¬) 슀트리밍
  • 포트폴리였 수읡λ₯  관리: 일간/μ‹œκ°„λ³„ 투자 수읡λ₯ (PnL) μŠ€λƒ…μƒ· μžλ™ μ €μž₯ 및 μ‹œκ°ν™” 차트 제곡 (Recharts)
  • λ°±κ·ΈλΌμš΄λ“œ μžλ™ν™”: APSchedulerλ₯Ό μ΄μš©ν•œ μƒμ‹œ μžμ‚° μŠ€λƒ…μƒ·, μ—…λΉ„νŠΈ λ§€λ§€ λ‚΄μ—­ 동기화, 였래된 둜그 μžλ™ 정리

πŸ› οΈ 기술 μŠ€νƒ (Tech Stack)

Frontend

  • Framework & UI: React 19, Vite, TypeScript
  • Visualization Component: Recharts (수읡λ₯  κ·Έλž˜ν”„)
  • Network: Axios (단일 및 곡톡 API 관리)

Backend

  • Framework: FastAPI, Uvicorn
  • Language: Python 3
  • Core Engine: PyUpbit (μ—…λΉ„νŠΈ μ£Όλ¬Έ 연동), Pandas / Numpy (데이터 νŒŒμ‹±)
  • Real-time & Schedule: SSE 지원 (sse-starlette), APScheduler

Database & Infra

  • Database: PostgreSQL 17 (ORM: SQLAlchemy 2.0, SQLModel, 비동기 λ“œλΌμ΄λ²„ asyncpg)
  • Migration: Alembic
  • Deploy: Docker & Docker Compose

πŸš€ μ‹œμž‘ κ°€μ΄λ“œ (Getting Started)

ν”„λ‘œμ νŠΈλ₯Ό λ‘œμ»¬μ—μ„œ κ΅¬λ™ν•˜λ €λ©΄ λ‹€μŒ μ„€μ •κ³Ό ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

1. ν”„λ‘œμ νŠΈ λ‹€μš΄λ‘œλ“œ (Clone)

git clone https://github.com/μ‚¬μš©μžκ³„μ •/auto-trading-bot.git
cd auto-trading-bot

2. λ°±μ—”λ“œ/DB ν™˜κ²½ λ³€μˆ˜ μ„€μ •

backend 디렉토리에 .env νŒŒμΌμ„ μƒμ„±ν•˜κ³ , 본인의 μ—…λΉ„νŠΈ API 킀와 DB 정보λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€. backend/.env

UPBIT_ACCESS_KEY=λ‹Ήμ‹ μ˜_μ—…λΉ„νŠΈ_ACCESS_KEY
UPBIT_SECRET_KEY=λ‹Ήμ‹ μ˜_μ—…λΉ„νŠΈ_SECRET_KEY
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=gold_db

3. μ„œλ²„(DB/Backend) μ‹€ν–‰

이 ν”„λ‘œμ νŠΈλŠ” Docker Composeλ₯Ό ν™œμš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ™€ λ°±μ—”λ“œλ₯Ό ν•œ λ²ˆμ— 올릴 수 μžˆμŠ΅λ‹ˆλ‹€. μ΅œμƒμœ„ 경둜(auto-trading-bot/)μ—μ„œ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ„Έμš”.

docker-compose up -d --build

ꡬ동 확인 ➜ http://localhost:8000/docs (FastAPI Swagger UI 확인 κ°€λŠ₯)

4. ν”„λ‘ νŠΈμ—”λ“œ 슀크립트 μ‹€ν–‰

λ°±μ—”λ“œκ°€ μΌœμ‘Œλ‹€λ©΄, ν”„λ‘ νŠΈμ—”λ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ 화면을 λ„μ›λ‹ˆλ‹€.

cd frontend
npm install
npm run dev

ꡬ동 확인 ➜ http://localhost:5173 (React λŒ€μ‹œλ³΄λ“œ μ§„μž…)


πŸ“‚ μ£Όμš” 폴더 ꡬ쑰 (Project Structure)

auto-trading-bot/
β”œβ”€β”€ backend/                   # 봇 ꡬ동 및 핡심 API μ„œλ²„
β”‚   β”œβ”€β”€ app/                   # 도메인 별 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 (bot, coin, log, performance λ“±)
β”‚   β”œβ”€β”€ core/                  # DB μ—°κ²° μ„€μ •, CORS/둜거 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ trading/               # λ§€λ§€ νŒλ‹¨ 기반 클래슀 및 λ°±ν…ŒμŠ€νŒ…(μ•Œκ³ λ¦¬μ¦˜) ν•¨μˆ˜
β”‚   β”œβ”€β”€ alembic/               # λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 도ꡬ μ„ΈνŒ…
β”‚   β”œβ”€β”€ .env                   # λ°±μ—”λ“œ ν™˜κ²½λ³€μˆ˜ μ„ΈνŒ…
β”‚   └── requirements.txt       # 파이썬 의쑴 라이브러리 λͺ©λ‘
β”œβ”€β”€ frontend/                  # κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ UI
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/        # 차트, 둜그, 헀더 λ“± μ»΄ν¬λ„ŒνŠΈ λͺ©λ‘
β”‚   β”‚   β”œβ”€β”€ lib/               # API 톡신 ν•¨μˆ˜ λͺ¨μŒ (`api.ts` λ“±)
β”‚   β”‚   β”œβ”€β”€ pages/             # λŒ€μ‹œλ³΄λ“œ 메인 λ ˆμ΄μ•„μ›ƒ 
β”‚   β”‚   └── App.tsx / main.tsx # μ•± μ§„μž…μ 
β”‚   β”œβ”€β”€ .env.local             # 둜컬 ν…ŒμŠ€νŠΈμš© ν™˜κ²½λ³€μˆ˜ λͺ¨μŒ
β”‚   └── vite.config.js         # λ²ˆλ“€λŸ¬ ν™˜κ²½ μ„ΈνŒ…
β”œβ”€β”€ postgres_data/             # Docker λ³Όλ₯¨ (DB 데이터λ₯Ό λ‘œμ»¬μ— 영ꡬ 보쑴용 λ§΅ν•‘)
└── docker-compose.yml         # λ°±μ—”λ“œ 및 DB μ»¨ν…Œμ΄λ„ˆ μ„ΈνŒ… 파일