[2026-05-21] 일일 리포트 — 17건 승8패9 -147,137원 / 재진입 쿨다운 30분 신규 적용

This commit is contained in:
2026-05-21 15:34:15 +09:00
parent adf755624a
commit bec4eb71b7
3 changed files with 105 additions and 6 deletions
+1
View File
@@ -12,6 +12,7 @@ TP1_PCT = 0.02 # 1차 익절 +2% → 50% 매도
TP2_PCT = 0.03 # 2차 익절 +3% → 전량
SL_PCT = 0.015 # 손절 -1.5%
MAX_HOLD_MIN = 120
TICKER_REENTRY_COOLDOWN_MIN = 30 # 동일 종목 재진입 금지 시간(분)
# ── 리스크 ──
POS_SIZE_PCT = 0.20
+17 -6
View File
@@ -12,7 +12,7 @@ from app.config import (
ENTRY_START, ENTRY_END,
AI_CONTEXT_PATH, AI_MIN_SCORE,
AI_BOOST_MULTI, MIN_TRADE_AMOUNT,
KOSPI_MIN_CHG
KOSPI_MIN_CHG, TICKER_REENTRY_COOLDOWN_MIN
)
logger = logging.getLogger(__name__)
@@ -40,10 +40,11 @@ class VolatilityBreakout:
"""
def __init__(self):
self.context = DEFAULT_CONTEXT.copy()
self.prev_data = {} # ticker → {high, low, amount} 전일 데이터
self.today_open = {} # ticker → 당일 시가
self.targets = {} # ticker → 목표가
self.context = DEFAULT_CONTEXT.copy()
self.prev_data = {} # ticker → {high, low, amount} 전일 데이터
self.today_open = {} # ticker → 당일 시가
self.targets = {} # ticker → 목표가
self._entry_times: dict = {} # ticker → 마지막 진입 datetime (쿨다운 추적)
# ── AI 컨텍스트 로드 ──
@@ -122,11 +123,20 @@ class VolatilityBreakout:
result = {"signal": False, "reason": "", "boosted": False, "multiplier": 1.0}
# 시간 체크
now = datetime.now().strftime("%H:%M")
now_dt = datetime.now()
now = now_dt.strftime("%H:%M")
if not (ENTRY_START <= now <= ENTRY_END):
result["reason"] = f"진입 시간 외 ({now})"
return result
# 동일 종목 재진입 쿨다운 체크
last_entry = self._entry_times.get(ticker)
if last_entry is not None:
elapsed = (now_dt - last_entry).total_seconds() / 60
if elapsed < TICKER_REENTRY_COOLDOWN_MIN:
result["reason"] = f"재진입 쿨다운 ({elapsed:.0f}분 / {TICKER_REENTRY_COOLDOWN_MIN}분)"
return result
# 목표가 확인
target = self.targets.get(ticker, 0)
if target <= 0:
@@ -163,6 +173,7 @@ class VolatilityBreakout:
if boosted:
multiplier = min(multiplier * AI_BOOST_MULTI, 1.5)
self._entry_times[ticker] = now_dt # 진입 시간 기록
result.update({
"signal" : True,
"reason" : f"목표가 돌파 ({current_price:,} >= {target:,.0f})",