""" 전역 설정 (WLD 월드코인, 3분 BB MTF 전략). """ import os try: from dotenv import load_dotenv load_dotenv() except ImportError: pass # --- API / 알림 --- COIN_TELEGRAM_BOT_TOKEN = os.getenv("COIN_TELEGRAM_BOT_TOKEN", "") COIN_TELEGRAM_CHAT_ID = os.getenv("COIN_TELEGRAM_CHAT_ID", "") # --- 거래 대상 --- SYMBOL = "WLD" COIN_NAME = "월드코인" KR_COINS: dict[str, str] = { SYMBOL: COIN_NAME, } # --- 타임프레임 (분) --- TREND_INTERVAL_1H = 60 TREND_INTERVAL_1D = 1440 # --- 쿨다운(초) --- BUY_COOLDOWN_SEC = int(os.getenv("BUY_COOLDOWN_SEC", "300")) SELL_COOLDOWN_SEC = int(os.getenv("SELL_COOLDOWN_SEC", "180")) BUY_MINUTE_LIMIT = BUY_COOLDOWN_SEC # --- 볼린저 (3분봉, 20, 2σ) --- BB_PERIOD = 20 BB_STD = 2 BB_MIN_WIDTH_PCT = float(os.getenv("BB_MIN_WIDTH_PCT", "0.8")) # --- RSI / 거래량 (조합 필터) --- RSI_PERIOD = 14 RSI_BUY_MAX = float(os.getenv("RSI_BUY_MAX", "42")) VOLUME_BUY_RATIO = float(os.getenv("VOLUME_BUY_RATIO", "1.0")) # --- 추세 / 레짐 --- TREND_RANGE_MA_GAP_PCT = 0.5 # --- 주문 --- DEFAULT_BUY_KRW = int(os.getenv("DEFAULT_BUY_KRW", "30000")) RANGE_BUY_KRW = int(os.getenv("RANGE_BUY_KRW", "15000")) # --- 수수료 (매수·매도 각각 적용, 시뮬레이션) --- TRADING_FEE_RATE = float(os.getenv("TRADING_FEE_RATE", "0.0005")) # --- coins.db (downloader.py 적재 간격, 분) --- # 빗썸 분봉 API: 1,3,5,10,15,30,60,240 / 일봉 1440 ALL_INTERVALS: tuple[int, ...] = (1, 3, 5, 10, 15, 30, 60, 240, 1440) DOWNLOAD_INTERVALS: tuple[int, ...] = ALL_INTERVALS DOWNLOAD_MONTHS = int(os.getenv("DOWNLOAD_MONTHS", "6")) # 1분봉은 용량·API 부담으로 기본 2개월 (환경변수로 조정) DOWNLOAD_MONTHS_1M = int(os.getenv("DOWNLOAD_MONTHS_1M", "2")) DB_PATH = "coins.db" # 규칙 탐색·조합 분석 기준 타임라인 ENTRY_INTERVAL = 3 # 실시간: discovered_rules + 전 봉 BB·일목 조합 (False면 mtf_bb_policy) USE_DISCOVERED_LIVE = os.getenv("USE_DISCOVERED_LIVE", "true").lower() in ("1", "true", "yes") # --- 시뮬레이션 --- SIM_INITIAL_CASH_KRW = int(os.getenv("SIM_INITIAL_CASH_KRW", "200000")) SIM_MIN_ORDER_KRW = int(os.getenv("SIM_MIN_ORDER_KRW", "5000")) # --- 실행 --- MONITOR_LOOP_SLEEP_SEC = 10 COOLDOWN_FILE = "coins_buy_time.json"