feat: Add DART strategy and related configurations

ㅇ
Changes:
- Introduced the DART strategy to the trading system, including its configuration and integration into the existing framework.
- Updated the database schema to include DART-specific tables for disclosures and watchlists.
- Enhanced the backtesting and parameter search functionalities to support the DART strategy.
- Implemented new rules for browser verification and API interactions to ensure compliance with the updated DART strategy.

Impact:
- These additions expand the trading capabilities of the system, allowing for more comprehensive analysis and execution of DART-related strategies, while maintaining system integrity and performance.
This commit is contained in:
Your Name
2026-07-21 07:50:24 +09:00
parent 74db49149f
commit 61bec4bd1d
86 changed files with 4811 additions and 297 deletions

View File

@@ -20,6 +20,7 @@ CONFIG_TABLE_NAMES: Tuple[str, ...] = (
"config_range_break",
"config_updow",
"config_dbband",
"config_dart",
)
STRATEGY_ID_TO_TABLE: Dict[str, str] = {
@@ -30,6 +31,7 @@ STRATEGY_ID_TO_TABLE: Dict[str, str] = {
"RANGE_BREAK": "config_range_break",
"UPDOW": "config_updow",
"DBBAND": "config_dbband",
"DART": "config_dart",
}
# 전략 ON/OFF · MM alias — 접두어 규칙 예외 없이 전략 테이블에만 저장
@@ -41,6 +43,7 @@ _EXPLICIT_KEY_TABLE: Dict[str, str] = {
"STRATEGY_RANGE_BREAK_ENABLED": "config_range_break",
"STRATEGY_UPDOW_ENABLED": "config_updow",
"STRATEGY_DBBAND_ENABLED": "config_dbband",
"STRATEGY_DART_ENABLED": "config_dart",
"KIS_SCALP_MM_CHANNEL": "config_scalp",
"KIS_SHORT_MM_CHANNEL": "config_short",
"KIS_MOMENTUM_MM_CHANNEL": "config_momentum",
@@ -48,6 +51,7 @@ _EXPLICIT_KEY_TABLE: Dict[str, str] = {
"KIS_RANGE_BREAK_MM_CHANNEL": "config_range_break",
"KIS_UPDOW_MM_CHANNEL": "config_updow",
"KIS_DBBAND_MM_CHANNEL": "config_dbband",
"KIS_DART_MM_CHANNEL": "config_dart",
}
# 꼬리 오케스트레이터(SHORT strategy_id) — TAIL_* 와 분리
@@ -88,6 +92,11 @@ def classify_config_key(key: str) -> str:
return "config_updow"
if k.startswith("DBBAND_"):
return "config_dbband"
# DART_API_KEY 만 글로벌 시크릿(env_config), 나머지 DART_* → config_dart
if k == "DART_API_KEY":
return "env_config"
if k.startswith("DART_"):
return "config_dart"
if k.startswith("BREAKOUT_"):
return "config_breakout"
if k.startswith("RANGE_BREAK_"):