feat: 데이트레이딩 ORB 복구 + 스윙:DT 자본 50:50 + 시간대 제한 완화
- ORB: 09:00에 당일 분석이 없으면 최근 분석일 결과로 watchlist 선채움 → ORB 수집 가능. 자동 목록은 30분마다 갱신(당일 분석 완료 시 교체), 수동 설정 목록은 덮어쓰지 않음. - 자본 배분: DAY_TRADE_MAX_RATIO_DT 0.25→0.50, 종목당 4%→6%, 동시 3→8종목. SWING_MAX_CAPITAL_RATIO=0.50 신설 — 스윙 합산 투자액 초과 시 스윙 신규 매수 차단(trade_executor). - 시간대: 점심(11:30~13:00) VWAP/RSI_BB 제한 제거, 하드코딩 14:30 마감 → 설정값 15:00. - 회귀 테스트 3건, CLAUDE.md §6/§7.3/§8.2 갱신. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,7 @@ from app.services.mdd_manager import mdd_manager
|
||||
from app.services.daytrading.position_manager import day_trading_state
|
||||
from app.services.daytrading.entry_service import (
|
||||
collect_opening_ranges, scan_and_enter,
|
||||
get_watchlist, populate_daytrading_watchlist,
|
||||
get_watchlist, populate_daytrading_watchlist, is_watchlist_auto,
|
||||
)
|
||||
from app.services.daytrading.exit_service import check_and_exit_positions, force_close_all
|
||||
|
||||
@@ -111,7 +111,9 @@ async def daytrading_scheduler() -> None:
|
||||
if is_day_trade_entry_window():
|
||||
global _last_wl_sync
|
||||
wl = get_watchlist()
|
||||
if not wl and (time.time() - _last_wl_sync) > 1800:
|
||||
# 30분마다 갱신 (비어 있을 때만 → 항상): 09:00에 전일 분석으로 채운 목록을
|
||||
# 당일 배치 완료 후 당일 분석 결과로 교체하기 위함 (ORB 캐시는 종목코드 기준 유지)
|
||||
if not wl or (is_watchlist_auto() and (time.time() - _last_wl_sync) > 1800):
|
||||
_last_wl_sync = time.time()
|
||||
try:
|
||||
await populate_daytrading_watchlist()
|
||||
|
||||
Reference in New Issue
Block a user