79 lines
2.7 KiB
Python
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()
|