267 lines
8.1 KiB
Markdown
267 lines
8.1 KiB
Markdown
# Auto Stock Trading System 프로젝트 구조
|
|
|
|
## 📁 디렉토리 구조
|
|
|
|
```
|
|
auto-stock/
|
|
├── backend/ # FastAPI 백엔드
|
|
│ ├── app/
|
|
│ │ ├── api/
|
|
│ │ │ ├── __init__.py # API 라우터 통합
|
|
│ │ │ └── endpoints/
|
|
│ │ │ ├── trading_rules.py # 트레이딩 규칙 API
|
|
│ │ │ ├── trades.py # 거래 이력 API
|
|
│ │ │ ├── portfolio.py # 포트폴리오 API
|
|
│ │ │ ├── market_data.py # 시장 데이터 API
|
|
│ │ │ └── mcp.py # MCP 연동 API
|
|
│ │ ├── core/
|
|
│ │ │ ├── config.py # 설정 관리
|
|
│ │ │ └── database.py # 데이터베이스 연결
|
|
│ │ ├── models/
|
|
│ │ │ └── models.py # SQLAlchemy 모델
|
|
│ │ ├── services/
|
|
│ │ │ ├── websocket_manager.py # WebSocket 관리
|
|
│ │ │ └── korea_investment_api.py # 한국투자증권 API
|
|
│ │ └── main.py # FastAPI 앱 진입점
|
|
│ ├── Dockerfile
|
|
│ └── requirements.txt
|
|
│
|
|
├── mcp-server/ # MCP 서버 (Claude AI)
|
|
│ ├── main.py # MCP 서버 진입점
|
|
│ ├── config.py # 설정
|
|
│ ├── claude_client.py # Claude API 클라이언트
|
|
│ ├── mcp_tools.py # MCP 도구 레지스트리
|
|
│ ├── Dockerfile
|
|
│ └── requirements.txt
|
|
│
|
|
├── frontend/ # React 프론트엔드
|
|
│ ├── src/
|
|
│ │ ├── components/
|
|
│ │ │ └── Layout.tsx # 레이아웃 컴포넌트
|
|
│ │ ├── pages/
|
|
│ │ │ ├── Dashboard.tsx # 대시보드
|
|
│ │ │ ├── TradingRules.tsx # 트레이딩 규칙
|
|
│ │ │ ├── TradeHistory.tsx # 거래 이력
|
|
│ │ │ └── MCPStatus.tsx # MCP 상태
|
|
│ │ ├── hooks/
|
|
│ │ │ └── useWebSocket.ts # WebSocket 훅
|
|
│ │ ├── lib/
|
|
│ │ │ └── api.ts # API 클라이언트
|
|
│ │ ├── App.tsx # 앱 컴포넌트
|
|
│ │ ├── main.tsx # 진입점
|
|
│ │ ├── config.ts # 설정
|
|
│ │ └── index.css # 스타일
|
|
│ ├── public/
|
|
│ ├── index.html
|
|
│ ├── package.json
|
|
│ ├── vite.config.ts
|
|
│ ├── tailwind.config.js
|
|
│ ├── tsconfig.json
|
|
│ ├── nginx.conf
|
|
│ └── Dockerfile
|
|
│
|
|
├── docker/ # Docker 설정
|
|
│ └── init-db.sql # DB 초기화 스크립트
|
|
│
|
|
├── scripts/ # 유틸리티 스크립트
|
|
│ ├── deploy.sh # 프로덕션 배포
|
|
│ ├── dev.sh # 개발 모드
|
|
│ ├── stop.sh # 시스템 중지
|
|
│ ├── restart.sh # 재시작
|
|
│ ├── logs.sh # 로그 확인
|
|
│ └── backup.sh # DB 백업
|
|
│
|
|
├── .github/
|
|
│ └── workflows/
|
|
│ └── ci-cd.yml # CI/CD 파이프라인
|
|
│
|
|
├── docker-compose.yml # 프로덕션 Docker Compose
|
|
├── docker-compose.dev.yml # 개발용 Docker Compose
|
|
├── .env.example # 환경 변수 예시
|
|
├── .gitignore
|
|
├── Makefile # Make 명령어
|
|
├── ecosystem.config.js # PM2 설정
|
|
├── README.md # 프로젝트 소개
|
|
├── INSTALLATION.md # 설치 가이드
|
|
├── USER_GUIDE.md # 사용자 가이드
|
|
└── API_DOCS.md # API 문서
|
|
```
|
|
|
|
## 🎯 주요 기능
|
|
|
|
### 1. **대시보드**
|
|
- 실시간 포트폴리오 현황
|
|
- 총 자산 및 수익률
|
|
- 보유 종목 상세
|
|
|
|
### 2. **전략 룰 설정**
|
|
- 자동 매매 규칙 생성/수정/삭제
|
|
- 조건 및 액션 설정
|
|
- 규칙 우선순위 관리
|
|
|
|
### 3. **매매 로그**
|
|
- 전체 거래 내역
|
|
- 실행 상태 모니터링
|
|
- 거래 통계
|
|
|
|
### 4. **MCP 상태 모니터**
|
|
- MCP 서버 연결 상태
|
|
- Claude AI 도구 목록
|
|
- 실시간 로그
|
|
|
|
## 🔧 기술 스택
|
|
|
|
### Backend
|
|
- **FastAPI**: 비동기 REST API
|
|
- **SQLAlchemy**: ORM
|
|
- **PostgreSQL**: 데이터베이스
|
|
- **Redis**: 캐싱
|
|
- **RabbitMQ**: 메시지 큐
|
|
- **WebSocket**: 실시간 통신
|
|
|
|
### MCP Server
|
|
- **FastAPI**: MCP 프로토콜 서버
|
|
- **Anthropic Claude**: AI 분석
|
|
- **Pandas/TA**: 기술적 지표 계산
|
|
|
|
### Frontend
|
|
- **React 18**: UI 프레임워크
|
|
- **TypeScript**: 타입 안정성
|
|
- **Vite**: 빌드 도구
|
|
- **TailwindCSS**: 스타일링
|
|
- **React Query**: 데이터 페칭
|
|
- **Recharts**: 차트
|
|
|
|
### Infrastructure
|
|
- **Docker**: 컨테이너화
|
|
- **Docker Compose**: 오케스트레이션
|
|
- **Nginx**: 웹 서버
|
|
- **GitHub Actions**: CI/CD
|
|
|
|
## 🚀 빠른 시작
|
|
|
|
### 1. 환경 설정
|
|
```bash
|
|
cp .env.example .env
|
|
# .env 파일 편집하여 API 키 설정
|
|
```
|
|
|
|
### 2. Docker로 시작
|
|
```bash
|
|
./scripts/deploy.sh
|
|
```
|
|
|
|
### 3. 접속
|
|
- Frontend: http://localhost:3000
|
|
- Backend: http://localhost:8000
|
|
- MCP Server: http://localhost:8001
|
|
|
|
## 📊 시스템 아키텍처
|
|
|
|
```
|
|
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
|
|
│ Frontend │────▶│ Backend │────▶│ MCP Server │
|
|
│ (React) │ │ (FastAPI) │ │ (Claude) │
|
|
└─────────────┘ └──────────────┘ └─────────────┘
|
|
│ │
|
|
▼ ▼
|
|
┌──────────────┐ ┌─────────────┐
|
|
│ PostgreSQL │ │ Claude AI │
|
|
│ Redis │ └─────────────┘
|
|
│ RabbitMQ │
|
|
└──────────────┘
|
|
│
|
|
▼
|
|
┌──────────────┐
|
|
│ 한국투자증권 │
|
|
│ API │
|
|
└──────────────┘
|
|
```
|
|
|
|
## 🔐 보안
|
|
|
|
- API 키는 환경 변수로 관리
|
|
- JWT 토큰 기반 인증
|
|
- CORS 설정
|
|
- HTTPS 지원 (프로덕션)
|
|
|
|
## 📝 개발 가이드
|
|
|
|
### Backend 개발
|
|
```bash
|
|
cd backend
|
|
pip install -r requirements.txt
|
|
uvicorn app.main:app --reload
|
|
```
|
|
|
|
### MCP Server 개발
|
|
```bash
|
|
cd mcp-server
|
|
pip install -r requirements.txt
|
|
uvicorn main:app --reload --port 8001
|
|
```
|
|
|
|
### Frontend 개발
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
## 🧪 테스트
|
|
|
|
```bash
|
|
# Backend 테스트
|
|
make test-backend
|
|
|
|
# Frontend 테스트
|
|
make test-frontend
|
|
```
|
|
|
|
## 📦 배포
|
|
|
|
### Docker Compose
|
|
```bash
|
|
make deploy
|
|
```
|
|
|
|
### PM2 (Node.js Process Manager)
|
|
```bash
|
|
pm2 start ecosystem.config.js
|
|
```
|
|
|
|
## 🛠️ 유용한 명령어
|
|
|
|
```bash
|
|
make help # 도움말
|
|
make dev # 개발 모드
|
|
make deploy # 배포
|
|
make stop # 중지
|
|
make restart # 재시작
|
|
make logs # 로그
|
|
make backup # DB 백업
|
|
make clean # 정리
|
|
```
|
|
|
|
## 📚 문서
|
|
|
|
- [README.md](README.md) - 프로젝트 소개
|
|
- [INSTALLATION.md](INSTALLATION.md) - 설치 가이드
|
|
- [USER_GUIDE.md](USER_GUIDE.md) - 사용자 가이드
|
|
- [API_DOCS.md](API_DOCS.md) - API 문서
|
|
|
|
## ⚠️ 주의사항
|
|
|
|
- 실제 거래 전 충분한 테스트 필요
|
|
- API 키 보안 관리
|
|
- 손실 위험 인지
|
|
- 규칙 신중하게 설정
|
|
|
|
## 📄 라이센스
|
|
|
|
MIT License
|
|
|
|
## 🤝 기여
|
|
|
|
Pull Request와 Issue는 언제나 환영합니다!
|