WLD DeepCoin 단계별 구조 재편 및 설정·문서 통합
로고스/루트 레거시를 제거하고 deepcoin 패키지·scripts 01~05 CLI·docs/reference로 데이터·GT·분석·매칭·운영 단계를 정리했다. config와 .env 기반 설정, trade_anaysis.html 동기화 포함. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
71
deepcoin/analysis/general_analysis_runner.py
Normal file
71
deepcoin/analysis/general_analysis_runner.py
Normal file
@@ -0,0 +1,71 @@
|
||||
"""
|
||||
general_analysis 실행 진입점.
|
||||
|
||||
python scripts/03_analyze_trades.py
|
||||
python scripts/03_analyze_trades.py --limit 20 # 테스트용 타점 수 제한
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from config import CHART_LOOKBACK_DAYS, SYMBOL
|
||||
from deepcoin.analysis.general_analysis_config import (
|
||||
DEFAULT_OUTPUT_CSV,
|
||||
DEFAULT_OUTPUT_HTML,
|
||||
DEFAULT_TRADES_FILE,
|
||||
)
|
||||
from deepcoin.analysis.general_analysis_report import write_analysis_report
|
||||
from deepcoin.analysis.general_analysis_snapshot import export_trade_snapshots
|
||||
from deepcoin.ops.monitor import Monitor
|
||||
from deepcoin.data.mtf_bb import load_frames_from_db
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""ground truth 타점 MTF general_analysis 스냅샷 생성."""
|
||||
parser = argparse.ArgumentParser(description="general_analysis MTF 타점 분석")
|
||||
parser.add_argument("--limit", type=int, default=0, help="타점 수 제한 (0=전체)")
|
||||
parser.add_argument("--trades", type=str, default=DEFAULT_TRADES_FILE)
|
||||
parser.add_argument("--csv", type=str, default=DEFAULT_OUTPUT_CSV)
|
||||
parser.add_argument("--html", type=str, default=DEFAULT_OUTPUT_HTML)
|
||||
args = parser.parse_args()
|
||||
|
||||
from deepcoin.paths import REPORTS_ANALYSIS
|
||||
|
||||
trades_path = Path(args.trades)
|
||||
data = json.loads(trades_path.read_text(encoding="utf-8"))
|
||||
trades = data.get("trades") or []
|
||||
if args.limit > 0:
|
||||
trades = trades[: args.limit]
|
||||
print(f"테스트 모드: 타점 {args.limit}건만")
|
||||
|
||||
print(f"=== general_analysis {SYMBOL} (lookback {CHART_LOOKBACK_DAYS}일) ===")
|
||||
mon = Monitor(cooldown_file=None)
|
||||
frames = load_frames_from_db(mon, SYMBOL, lookback_days=CHART_LOOKBACK_DAYS)
|
||||
if not frames:
|
||||
raise RuntimeError("coins.db 데이터 없음")
|
||||
|
||||
# limit 시 임시 trades 파일
|
||||
if args.limit > 0:
|
||||
tmp = REPORTS_ANALYSIS / "_ga_trades_subset.json"
|
||||
tmp.parent.mkdir(exist_ok=True)
|
||||
subset = {**data, "trades": trades}
|
||||
tmp.write_text(json.dumps(subset, ensure_ascii=False), encoding="utf-8")
|
||||
trades_path = tmp
|
||||
|
||||
from deepcoin.analysis.general_analysis_snapshot import build_trade_mtf_snapshots
|
||||
|
||||
csv_path = Path(args.csv)
|
||||
df = build_trade_mtf_snapshots(frames, trades)
|
||||
csv_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
df.to_csv(csv_path, index=False, encoding="utf-8-sig")
|
||||
print(f"저장: {csv_path} ({len(df)}행 × {len(df.columns)}열)")
|
||||
|
||||
write_analysis_report(csv_path, Path(args.html))
|
||||
print("완료.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user