반복적인 IPC 오류 해결, 봇 오류 해결, 인증 오류 해결, 서버 자원 할당 오류 해결, 코드 리팩토링

This commit is contained in:
2026-02-14 18:03:13 +09:00
parent 4fd0aa91bc
commit 9dbf6e6791
15 changed files with 1452 additions and 847 deletions

113
README.md
View File

@@ -1,14 +1,19 @@
# 🤖 AI Automated Trading System (Windows Server Edition)
이 프로젝트는 **Python, PyTorch (Deep Learning), Ollama (LLM)**을 활용하여 한국 주식 시장(KIS)에서 자동으로 매매를 수행하는 고성능 AI 트레이딩 봇입니다.
**ProcessPoolExecutor 기반의 병렬 처리**와 **독립된 텔레그램 봇 프로세스**를 통해 높은 안정성과 응답 속도를 보장합니다.
## 🚀 Key Features
* **Multi-Process Architecture**: 메인 서버(`main_server.py`)가 트레이딩 봇 텔레그램 봇 독립된 프로세스로 관리하여 안정성 확보.
* **Advanced AI Analysis**: **RTX 5070 Ti (16GB VRAM)** 하드웨어 가속을 활용한 고성능 예측 모델 탑재.
* **Hybrid Strategy**: 기술적 분석 + 뉴스 감성 분석(LLM) + 가격 예측(LSTM)을 결합한 복합 추론.
* **Telegram Control**: 실시간 상태 조회, 리포트 수신, 프로세스 제어(`/restart` 등) 지원.
* **Safe Trading**: 예수금 초과 매수 방지, 손절/익절 자동화, API 속도 제한(Throttling) 적용.
* **Multi-Process Architecture**: 메인 서버, 트레이딩 봇, 텔레그램 봇이 각각 독립된 프로세스로 실행되어 상호 간섭을 최소화합니다.
* **Advanced AI Analysis**: **RTX 5070 Ti (16GB VRAM)** 하드웨어 가속을 활용한 **Attention-LSTM** 모델이 주가를 예측합니다.
* **Process Management System**:
* **Zombie Killer**: 서버 시작 시 이전에 종료되지 않은 좀비 프로세스를 자동으로 감지하고 제거합니다.
* **PID Tracking**: 실행 중인 모든 프로세스의 ID를 `pids.txt` 파일에 실시간으로 기록하여 식별을 돕습니다.
* **Reliable Telegram Bot**:
* **HTML Parsing**: 마크다운 에러를 방지하기 위해 안정적인 HTML 포맷을 사용하여 메시지를 전송합니다.
* **Interactive Commands**: `/status`, `/portfolio`, `/exec` 등 다양한 명령어로 봇을 실시간 제어할 수 있습니다.
* **Auto-Recovery**: `ProcessPoolExecutor`의 워커 프로세스가 충돌(OOM 등)할 경우 자동으로 감지하고 재시작합니다.
---
@@ -16,28 +21,27 @@
```plaintext
/
├── main_server.py # [Entry Point] 프로세스 매니저 및 서버 실행
├── watchlist_manager.py # [Automation] 매일 아침 종목 선정 및 Watchlist 갱신
├── main_server.py # [Entry Point] 프로세스 매니저 및 FastAPI 서버
├── pids.txt # [Runtime] 실행 중인 프로세스 ID 목록 (자동 관리)
├── modules/
│ ├── bot.py # [Core] 메인 트레이딩 루프 및 사이클 관리
│ ├── bot.py # [Core] 메인 트레이딩 봇 (스케줄러 & 상태 머신)
│ ├── config.py # [Config] 환경 변수 및 상수 관리
│ ├── analysis/ # [Brain] 분석 모듈
│ ├── analysis/ # [Brain] AI 분석 모듈
│ │ ├── deep_learning.py # PyTorch 기반 Attention-LSTM 모델
│ │ ├── technical.py # RSI, 볼린저밴드 등 보조지표 계산
│ │ └── macro.py # 거시경제(환율, 유가, 지수) 분석
│ ├── services/ # [I/O] 외부 서비스 연동
│ │ ├── kis.py # 한국투자증권 API 클라이언트 (Throttling 적용)
│ │ ├── telegram.py # 텔레그램 메시지 발송
│ │ ├── kis.py # 한국투자증권 API (Throttling 적용)
│ │ ├── telegram_bot/ # [Independent] 독립 프로세스 텔레그램 봇
│ │ ├── news.py # 네이버 뉴스 크롤링
│ │ ── ollama.py # Local LLM (Llama 3) 인터페이스
│ └── telegram_bot/ # 텔레그램 봇 서버 (Interactive Mode)
├── strategy/ # [Logic] 매수/매도 의사결정 로직
│ └── utils/ # [Util] IPC, 시스템 모니터링 등
├── data/ # [Runtime Data] 실행 중 생성되는 데이터 (Git 제외)
├── bot_ipc.json # 프로세스 간 상태 공유
├── watchlist.json # 감시 대상 종목 리스트
│ └── daily_trade_history.json # 당일 매매 기록
└── tests/ # 테스트 스크립트
│ │ ── ollama.py # Local LLM (Llama 3) 인터페이스
├── strategy/ # [Logic] 매수/매도 의사결정 프로세스
│ └── process.py # 워커 프로세스용 분석 함수 (병렬 처리)
│ └── utils/ # [Util] 유틸리티
│ ├── process_tracker.py # PID 추적 및 좀비 프로세스 정리
├── ipc.py # 프로세스 간 통신 (IPC)
└── monitor.py # 시스템 리소스 모니터링
└── ...
```
---
@@ -56,60 +60,45 @@
### 2. Hardware Acceleration (RTX 5070 Ti)
* **CUDA Optimization**: PyTorch를 통해 GPU 가속 활성화.
* **Specs**:
* Batch Size: 64
* Epochs: 200
* Precision: FP32
* **Specs**: Batch Size 64, Epochs 200, Precision FP32.
* 서버 시작 시 `High Performance Mode`가 자동으로 감지 및 활성화됩니다.
### 3. Integrated Decision Making (Quant Strategy)
AI 모델의 예측 결과는 단독으로 쓰이지 않고, 다음 요소들과 결합되어 최종 매수 결정을 내립니다.
1. **Technical Score (40%)**: RSI, 거래량, 변동성 지표.
2. **News Sentiment (30%)**: Ollama(LLM)가 분석한 최신 뉴스 긍/부정 점수.
3. **AI Prediction (30% ~ 60%)**: LSTM 모델의 상승 예측 신뢰도.
* *AI Confidence*가 85% 이상일 경우, AI 비중을 **60%**까지 동적으로 상향 조정.
* **OOM Protection**: GPU 메모리 보호를 위해 병렬 워커 수를 2개로 제한하고, 워커 충돌 시 자동 재시작합니다.
---
## 🛠️ Setup & Installation
## 🛠️ Usage & Troubleshooting
### 1. Prerequisites
* Python 3.10+
* NVIDIA GPU + CUDA Toolkit (Recommended for AI performance)
* Ollama (Local LLM Server running on port 11434)
### 2. Installation
### 1. Installation
```bash
# Clone Repository
# Clone & Install
git clone <repository-url>
# Install Dependencies
pip install -r requirements.txt
```
### 3. Configuration (.env)
프로젝트 루트에 `.env` 파일을 생성하고 아래 정보를 입력하세요.
```ini
# 한국투자증권 (KIS)
KIS_APP_KEY=your_app_key
KIS_APP_SECRET=your_app_secret
KIS_ACCOUNT=12345678-01
KIS_IS_VIRTUAL=True # True: 모의투자, False: 실전투자
# Telegram
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# AI Server
OLLAMA_API_URL=http://localhost:11434
```
### 4. Run
```bash
# Start Server
python main_server.py
```
### 2. Process Management (`pids.txt`)
서버가 실행되면 `pids.txt` 파일에 현재 실행 중인 프로세스 목록이 기록됩니다.
```text
58360: Main Server (Uvicorn Worker)
72028: Trading Bot Main
66488: Telegram Bot Standalone
16372: Trading Bot Worker
...
```
* **CPU 사용량이 비정상적으로 높을 때**: 작업 관리자나 `Get-Process python`으로 확인한 PID가 `pids.txt`에 없다면 **좀비 프로세스**입니다.
* **자동 정리**: `main_server.py`를 다시 실행하면 시작 시 자동으로 좀비 프로세스를 찾아 종료합니다.
### 3. Telegram Commands
* `/start`: 봇 시작 및 명령어 안내
* `/status`: 현재 봇 상태, 시장 지수, AI 모델 상태 조회
* `/portfolio`: 현재 보유 종목 및 수익률 조회
* `/system`: CPU/GPU 사용량 및 프로세스 상태 확인
* `/restart`: 봇 프로세스 재시작 (업데이트 반영 시 유용)
* `/stop`: 봇 종료
---
## ⚠️ Disclaimer
본 소프트웨어는 투자를 보조하는 도구이며, 투자의 결과에 대한 책임은 전적으로 사용자에게 있습니다. AI의 예측은 100% 정확하지 않으며, 시장 상황에 따라 손실이 발생할 수 있습니다.
본 소프트웨어는 투자를 보조하는 도구이며, 투자의 결과에 대한 책임은 전적으로 사용자에게 있습니다. AI의 예측은 100% 정확하지 않으며, 시장 상황에 따라 손실이 발생할 수 있습니다. 모의투자 환경에서 충분한 테스트 후 사용하시기 바랍니다.