source push
This commit is contained in:
78
init_db.py
Normal file
78
init_db.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user