Files
kis_bot/init_db.py
2026-02-22 18:05:14 +09:00

79 lines
2.7 KiB
Python

"""
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()