""" KIS 봇용 DB 초기화 스크립트 - DB 파일 생성 및 테이블 생성 - 기본 env_config 삽입 (새 스냅샷 행 1개 INSERT) 실행 시점: 자동 실행 없음. 최초 1회 또는 DB 새로 쓸 때만 수동 실행. 예: python kis_bot/init_db.py - 실행할 때마다 env_config에 새 행이 추가됨(INSERT만, 기존 행 수정 안 함). - 봇은 항상 '가장 최신 행(id 최대)'만 사용함. - 모의/실전 계좌 둘 다 넣으려면 아래 default_env에 KIS_ACCOUNT_NO(실전), KIS_ACCOUNT_NO_MOCK(모의) 값을 채워두고 실행하면 됨. """ import os import sys from pathlib import Path # 현재 디렉토리를 경로에 추가 SCRIPT_DIR = Path(__file__).resolve().parent sys.path.insert(0, str(SCRIPT_DIR)) from database import TradeDB def init_database(): """DB 초기화 및 기본 설정 삽입""" db_path = SCRIPT_DIR / "quant_bot.db" print(f"📊 DB 초기화 시작: {db_path}") # DB 초기화 (테이블 생성) db = TradeDB(db_path=str(db_path)) # 기본 env_config 삽입 default_env = { # 한투 API 설정 "KIS_APP_KEY": os.environ.get("KIS_APP_KEY", ""), "KIS_APP_SECRET": os.environ.get("KIS_APP_SECRET", ""), "KIS_ACCOUNT_NO": os.environ.get("KIS_ACCOUNT_NO", ""), "KIS_ACCOUNT_CODE": os.environ.get("KIS_ACCOUNT_CODE", "01"), "KIS_ACCOUNT_NO_MOCK": os.environ.get("KIS_ACCOUNT_NO_MOCK", ""), "KIS_ACCOUNT_CODE_MOCK": os.environ.get("KIS_ACCOUNT_CODE_MOCK", "01"), "KIS_MOCK": os.environ.get("KIS_MOCK", "true"), # 단타 봇 설정 "STOP_LOSS_PCT": "-0.03", "TAKE_PROFIT_PCT": "0.05", "MIN_DROP_RATE": "0.03", "MIN_RECOVERY_RATIO_SHORT": "0.5", "MAX_STOCKS": "3", # 늘림목 봇 설정 "MAX_PER": "25", "MAX_PEG": "1.5", "MIN_GROWTH_PCT": "10", "MAX_POSITION_PCT": "0.20", "STOP_LOSS_PCT": "-0.30", "TAKE_PROFIT_PCT": "0.50", # 공통 설정 "USE_RISK_CHECK": "true", "DAILY_STOP_LOSS_PCT": "-0.05", "CONSECUTIVE_LOSS_LIMIT": "4", "MAX_LOSS_PER_TRADE_KRW": "200000", "USE_BAN_SYSTEM": "true", "BAN_HOURS": "24", "USE_STOCK_FILTER": "true", "FORCE_MARKET_OPEN": "false", } env_id = db.insert_env_snapshot(default_env) if env_id: print(f"✅ 기본 env_config 삽입 완료 (id: {env_id})") else: print("⚠️ env_config 삽입 실패") print(f"✅ DB 초기화 완료: {db_path}") db.close() if __name__ == "__main__": init_database()