레디스 및 구조 수정중

This commit is contained in:
2026-02-25 16:56:34 +09:00
parent 89f54bae55
commit ec02f27200
10 changed files with 428 additions and 131 deletions

View File

@@ -1,45 +1,248 @@
# 한국투자증권 API
# ═══════════════════════════════════════════════════════════════════════════════
# 자동 주식 매매 시스템 설정 파일 (.env)
# ═══════════════════════════════════════════════════════════════════════════════
#
# 모든 설정이 .env 파일 변수로 제어 가능합니다.
# 기본값은 config.py에 정의되어 있고, 여기서 오버라이드할 수 있습니다.
#
# 참조: CLAUDE.md - 섹션 1.2 환경 변수 참고
# ═══════════════════════════════════════════════════════════════════════════════
# 기본 애플리케이션 설정
# ═══════════════════════════════════════════════════════════════════════════════
ENVIRONMENT=development
DEBUG=false
LOG_LEVEL=INFO
# 백엔드 서버
BACKEND_HOST=0.0.0.0
BACKEND_PORT=8000
SECRET_KEY=your-secret-key-here
# ═══════════════════════════════════════════════════════════════════════════════
# 데이터베이스 및 캐시
# ═══════════════════════════════════════════════════════════════════════════════
DATABASE_URL=postgresql://autostock:autostock_password@localhost:5432/autostock_db
REDIS_URL=redis://localhost:6379/0
RABBITMQ_URL=amqp://autostock:autostock_password@localhost:5672/
# PostgreSQL (도커 환경)
POSTGRES_USER=autostock
POSTGRES_PASSWORD=autostock_password
POSTGRES_DB=autostock
# ═══════════════════════════════════════════════════════════════════════════════
# 한국투자증권 (KIS) API 설정
# ═══════════════════════════════════════════════════════════════════════════════
# 모드 선택: "virtual" (모의투자) 또는 "real" (실전투자)
KIS_MODE=virtual
# 모의투자 (Paper Trading) 설정
KIS_VIRTUAL_APP_KEY=your_virtual_app_key
KIS_VIRTUAL_APP_SECRET=your_virtual_app_secret
KIS_VIRTUAL_ACCOUNT_NO=00000000-01
KIS_VIRTUAL_URL=https://openapivts.koreainvestment.com:29443
# 실전투자 설정
KIS_REAL_APP_KEY=your_real_app_key
KIS_REAL_APP_SECRET=your_real_app_secret
KIS_REAL_ACCOUNT_NO=00000000-01
KIS_REAL_URL=https://openapi.koreainvestment.com:9443
# WebSocket 접속키 (수동 지정 시 우선, 비어있으면 자동 발급)
KIS_WS_APPROVAL_KEY=
# WebSocket URL (커스토마이징 필요 시만 수정)
KIS_WS_REAL_URL=wss://openapi.koreainvestment.com:21000/websocket/realtime
KIS_WS_VIRTUAL_URL=wss://openapiwss.koreainvestment.com:29443/websocket/realtime
# KIS 실시간 스트림 타이밍 (초 단위)
KIS_SYNC_INTERVAL=10 # 구독 목록 동기화 주기
KIS_RECONNECT_WAIT=5 # 재연결 대기 시간
KIS_APPROVAL_KEY_TTL=82800 # approval_key 캐시 유효시간 (초, 23시간)
# 레거시 호환 (직접 지정 시 우선)
KOREA_INVESTMENT_APP_KEY=your_app_key_here
KOREA_INVESTMENT_APP_SECRET=your_app_secret_here
KOREA_INVESTMENT_ACCOUNT_NUMBER=your_account_number
KOREA_INVESTMENT_API_BASE_URL=https://openapi.koreainvestment.com:9443
# Claude AI
ANTHROPIC_API_KEY=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
# ═══════════════════════════════════════════════════════════════════════════════
# AI 프로바이더 설정
# ═══════════════════════════════════════════════════════════════════════════════
AI_PROVIDER=claude # "claude" 또는 "gemini"
ANTHROPIC_API_KEY=your_anthropic_api_key
# Database
POSTGRES_USER=autostock
POSTGRES_PASSWORD=autostock_password
POSTGRES_DB=autostock_db
DATABASE_URL=postgresql://autostock:autostock_password@postgres:5432/autostock_db
# MCP 서버 설정
MCP_SERVER_URL=http://localhost:8001
MCP_VALIDATION_ENABLED=true # AI 검증 활성화
MCP_CONFIDENCE_THRESHOLD=0.5 # AI 신뢰도 최소값 (0.0~1.0)
# Redis
REDIS_URL=redis://redis:6379/0
# ═══════════════════════════════════════════════════════════════════════════════
# 거래 설정 (CLAUDE.md 섹션 5-8 기반)
# ═══════════════════════════════════════════════════════════════════════════════
# RabbitMQ
RABBITMQ_DEFAULT_USER=autostock
RABBITMQ_DEFAULT_PASS=autostock_password
RABBITMQ_URL=amqp://autostock:autostock_password@rabbitmq:5672/
# 기본 거래 파라미터
AUTO_TRADE_ENABLED=true # 자동매매 활성화
ANALYSIS_STOCK_COUNT=150 # 배치 분석 종목 수
AUTO_TRADE_TOP_N_PER_RULE=2 # 규칙당 자동매매 최대 종목 수
MAX_DAILY_TRADES=5
# Backend
BACKEND_HOST=0.0.0.0
BACKEND_PORT=8000
SECRET_KEY=your_secret_key_change_this_in_production
# 포지션 규칙 (섹션 5.1)
MAX_POSITION_SIZE=0.04 # 1종목당 최대 3-4% 자본
MAX_HOLDINGS_COUNT=20 # 동시 보유 최대 20종목
LEVERAGE_ETF_MAX_RATIO=0.20 # 레버리지/인버스 ETF 20% 이내
# Frontend
# 손절/익절 설정 (섹션 5.2)
STOP_LOSS_PERCENT=-6.0 # 저변동 종목 손절 -6%
STOP_LOSS_HIGH_VOL=-10.0 # 고변동 종목 손절 -10%
TAKE_PROFIT_PERCENT=5.0 # 익절 기본값
# ATR 기반 손절/트레일링 (섹션 5.2)
ATR_STOP_MULTIPLIER=2.5 # 2.5 × ATR 손절
ATR_TRAILING_MULTIPLIER=1.5 # 1.5 × ATR 트레일링
# MDD (최대 낙폭) 관리 (섹션 5.3)
MDD_PAUSE_THRESHOLD=-10.0 # -10% MDD: 신규진입 중단 + 30% 축소
MDD_FORCE_THRESHOLD=-20.0 # -20% MDD: 50% 강제 축소
# 가격 필터 (섹션 5.4)
MIN_PRICE_KRW=5000 # 국내 5,000원 이하 매수 금지
MIN_PRICE_USD=4.0 # 미국 $4 이하 매수 금지
# 연속 손실 관리 (섹션 7.4)
CONSECUTIVE_LOSS_BAN_COUNT=3 # 3회 연속 손실
CONSECUTIVE_LOSS_BAN_DAYS=30 # 30거래일 진입 금지
# ═══════════════════════════════════════════════════════════════════════════════
# 전략 A: RSI + 볼린저 밴드 평균회귀 (섹션 6)
# ═══════════════════════════════════════════════════════════════════════════════
MEAN_REVERSION_MAX_CAPITAL=0.30 # 전체 자본의 30% 이내 (섹션 7.5)
MEAN_REVERSION_RSI_THRESHOLD=30.0 # RSI 과매도 기준 (≤30)
MEAN_REVERSION_MULTIPLIER_STRONG=1.50 # RSI ≤ 20: 강한 신호 배수 (+50%)
MEAN_REVERSION_MULTIPLIER_NORMAL=1.25 # RSI ≤ 25: 중간 신호 배수 (+25%)
MEAN_REVERSION_MULTIPLIER_WEAK=1.00 # 기본 신호 배수 (4%)
# 시장 국면 필터 (7.5)
BEAR_MARKET_FILTER_ENABLED=true
BEAR_MARKET_MIN_SCORE=5
BEAR_MARKET_MAX_TRADES=3
BEAR_MARKET_POSITION_RATIO=0.5
# 급등 과열 필터 (섹션 5.4)
OVERHEAT_FILTER_ENABLED=true
OVERHEAT_3DAY_MAX=15.0 # 3일 최대 상승률 15%
OVERHEAT_5DAY_MAX=20.0 # 5일 최대 상승률 20%
OVERHEAT_10DAY_MAX=30.0 # 10일 최대 상승률 30%
OVERHEAT_DISPARITY_MAX=108.0 # 괴리율 최대 108%
# 트렌드 필터 (7.1)
TREND_FILTER_ENABLED=false
TREND_MA_SHORT=20 # 단기 MA 기간
TREND_MA_LONG=60 # 장기 MA 기간
TREND_TOLERANCE_PCT=0.005 # 허용 오차 0.5%
# ═══════════════════════════════════════════════════════════════════════════════
# 전략 B: 데이트레이딩 (섹션 8.2)
# ═══════════════════════════════════════════════════════════════════════════════
DAY_TRADE_ENABLED=true # 데이트레이딩 활성화
DAY_TRADE_MAX_POSITIONS=3 # 동시 최대 3종목
DAY_TRADE_CAPITAL_RATIO=0.25 # 전체 자본 대비 최대 25%
DAY_TRADE_MAX_RATIO_DT=0.25 # 전체 데이트레이딩 최대 25%
DAY_TRADE_PER_STOCK_RATIO=0.10 # 종목당 최대 10%
DAY_TRADE_MAX_CAPITAL_RATIO=0.10 # 종목당 최대 10%
# 데이트레이딩 손절/익절
DAY_TRADE_ORB_STOP_LOSS_PCT=0.02 # ORB 손절 -2%
DAY_TRADE_REVERSION_STOP_LOSS_PCT=0.025 # VWAP/RSI_BB 손절 -2.5%
DAY_TRADE_TRAILING_TRIGGER=0.015 # 트레일링 발동 +1.5%
DAY_TRADE_TRAILING_ATR_MULT=1.0 # 트레일링 ATR 배수
DAY_TRADE_ORB_BREAKOUT_MARGIN=0.002 # ORB 돌파 최소 여유 +0.2%
DAY_TRADE_COST_PCT=0.005 # 수수료+슬리피지 0.5%
# 데이트레이딩 일일/시간 제한
DAY_TRADE_DAILY_LOSS_LIMIT=-0.03 # 일일 손실 한도 -3%
DAY_TRADE_ENTRY_CUTOFF_HOUR=15 # 신규 진입 마감 시간 (15시)
DAY_TRADE_ENTRY_CUTOFF_MIN=0 # 신규 진입 마감 분
DAY_TRADE_EOD_HOUR=15 # EOD 강제 청산 시작 시간
DAY_TRADE_EOD_MIN=20 # EOD 강제 청산 시작 분
DAY_TRADE_RSI_BREAKEVEN_THRESHOLD=40.0 # RSI_BB 진입 기준 (5분봉 RSI ≤ 40)
# ═══════════════════════════════════════════════════════════════════════════════
# 단기 전략 (15분봉, 섹션 8.2)
# ═══════════════════════════════════════════════════════════════════════════════
SHORT_TERM_MIN_ATR_RATIO=0.008 # ATR/close ≥ 0.8% (거래비용 커버)
SHORT_TERM_RSI_LOOKBACK=3 # RSI 반등 확인 과거 봉 수
SHORT_TERM_VOLUME_MULTIPLIER=1.5 # 거래량 필터 배수 (1.5배)
# ═══════════════════════════════════════════════════════════════════════════════
# 감시 목록 관리 (watchlist.py)
# ═══════════════════════════════════════════════════════════════════════════════
WATCHLIST_INIT_SIZE=50 # 아침 배치 초기화 종목 수
WATCHLIST_MAX_SIZE=100 # 최대 관리 종목 수
WATCHLIST_ENTRY_SCORE=60 # 장중 신규 진입 기준 점수
WATCHLIST_EXIT_SCORE=20 # 장중 제거 기준 점수
# ═══════════════════════════════════════════════════════════════════════════════
# 기술적 지표 설정 (technical_indicators.py)
# ═══════════════════════════════════════════════════════════════════════════════
# RSI (Relative Strength Index)
RSI_PERIOD=14 # RSI 계산 기간 (14일)
RSI_OVERSOLD_LEVEL=30.0 # RSI 과매도 수준
RSI_OVERBOUGHT_LEVEL=70.0 # RSI 과매수 수준
RSI_RECOVERY_RANGE_MIN=30.0 # RSI 회복 범위 최소값 (30~45)
RSI_RECOVERY_RANGE_MAX=45.0 # RSI 회복 범위 최대값
RSI_STABLE_RANGE_MIN=45.0 # RSI 안정 범위 최소값 (45~60)
RSI_STABLE_RANGE_MAX=60.0 # RSI 안정 범위 최대값
# 볼린저 밴드
BOLLINGER_PERIOD=20 # 볼린저 밴드 기간 (20일)
BOLLINGER_STDDEV=2.0 # 표준편차 배수
# 이동평균 (Moving Average)
MA_SHORT_PERIOD=5 # 단기 MA (5일)
MA_MEDIUM_PERIOD=20 # 중기 MA (20일)
MA_LONG_PERIOD=60 # 장기 MA (60일)
# ATR (Average True Range)
ATR_PERIOD=14 # ATR 계산 기간 (14일)
# ═══════════════════════════════════════════════════════════════════════════════
# API 레이트 제한 및 안전 운영
# ═══════════════════════════════════════════════════════════════════════════════
API_MAX_RETRIES=3 # 최대 재시도 횟수
API_RETRY_DELAY=1.5 # 초기 재시도 대기 시간 (초)
API_RETRY_BACKOFF=2.0 # 지수 백오프 배율
API_MIN_REQUEST_INTERVAL=0.5 # 최소 요청 간격 (초)
API_MAX_CONCURRENT_REQUESTS=4 # 동시 최대 요청 수
API_TIMEOUT=30.0 # API 타임아웃 (초)
# API 모니터링
API_ERROR_THRESHOLD=0.3 # 오류율 임계값 (30%)
API_MONITORING_WINDOW=100 # 모니터링 윈도우 (최근 100개 요청)
# ═══════════════════════════════════════════════════════════════════════════════
# ML (머신러닝) 설정
# ═══════════════════════════════════════════════════════════════════════════════
ML_TF_ENABLED=true # ML 모델 기반 보조지표 사용
ML_ENSEMBLE_ENABLED=true # ML 앙상블 활성화
ML_ENSEMBLE_MODEL_DIR=models/ensemble
ML_ENSEMBLE_RULE_WEIGHT=0.3 # 룰베이스 스코어 비중 (30%)
ML_ENSEMBLE_ML_WEIGHT=0.7 # ML 스코어 비중 (70%)
ML_ENSEMBLE_BUY_THRESHOLD=60 # 매수 최소 앙상블 스코어 (0~100)
ML_ENSEMBLE_CONFIDENCE_MIN=0.5 # 최소 신뢰도
# ═══════════════════════════════════════════════════════════════════════════════
# 프론트엔드 (선택사항)
# ═══════════════════════════════════════════════════════════════════════════════
VITE_API_URL=http://localhost:8000
VITE_WS_URL=ws://localhost:8000/ws
# MCP Server
MCP_SERVER_HOST=0.0.0.0
MCP_SERVER_PORT=8001
# ═══════════════════════════════════════════════════════════════════════════════
# 기타 설정
# ═══════════════════════════════════════════════════════════════════════════════
TOKEN_SAVE_MODE=true # JSON 압축, 차트 데이터 30일 제한
NEWS_API_KEY=your_news_api_key
# News API (선택)
NEWS_API_KEY=your_news_api_key_here
# 환경
ENVIRONMENT=development
DEBUG=true
# 로그 레벨
LOG_LEVEL=INFO