GT MTF 프로필·캘리브레이션과 04 매칭/시뮬/실거래 파이프라인을 추가한다.
3분~일봉 GT 타점 분석(03c), leg 체결 순서 수정, 총자산 90% 검증 루프, walk-forward Go/No-Go 시뮬, monitor·live_trader 및 reference 문서를 포함한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
61
deepcoin/matching/load_rules.py
Normal file
61
deepcoin/matching/load_rules.py
Normal file
@@ -0,0 +1,61 @@
|
||||
"""
|
||||
04 산출 matched_rules.json 로드.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from deepcoin.paths import MATCHING_MATCHED_RULES
|
||||
|
||||
|
||||
def load_matched_rules(path: Path | None = None) -> dict[str, Any]:
|
||||
"""
|
||||
matched_rules.json 전체를 로드합니다.
|
||||
|
||||
Args:
|
||||
path: JSON 경로. None이면 기본 경로.
|
||||
|
||||
Returns:
|
||||
matched_rules dict. 없으면 빈 dict.
|
||||
"""
|
||||
p = path or MATCHING_MATCHED_RULES
|
||||
if not p.is_file():
|
||||
return {}
|
||||
return json.loads(p.read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def load_active_rules(path: Path | None = None) -> list[dict[str, Any]]:
|
||||
"""
|
||||
04 선별 규칙 전체(strict 우선).
|
||||
|
||||
Args:
|
||||
path: matched_rules.json 경로.
|
||||
|
||||
Returns:
|
||||
규칙 dict 리스트.
|
||||
"""
|
||||
data = load_matched_rules(path)
|
||||
selected = data.get("selected") or []
|
||||
if selected:
|
||||
return list(selected)
|
||||
return list(data.get("selected_best_effort") or [])
|
||||
|
||||
|
||||
def load_monitor_rules(path: Path | None = None) -> list[dict[str, Any]]:
|
||||
"""
|
||||
05 모니터·텔레그램에 쓸 규칙 (holdout 통과, 매수·매도 각 최대 1개).
|
||||
|
||||
Args:
|
||||
path: matched_rules.json 경로.
|
||||
|
||||
Returns:
|
||||
monitor_rules 또는 active_rules fallback.
|
||||
"""
|
||||
data = load_matched_rules(path)
|
||||
monitor = data.get("monitor_rules") or []
|
||||
if monitor:
|
||||
return list(monitor)
|
||||
return load_active_rules(path)
|
||||
Reference in New Issue
Block a user