#!/usr/bin/env python """전략 목록 및 구조 확인 스크립트""" import os from strategies.base import StrategyRegistry from strategies import implementations def main(): print("=" * 80) print("전략 모듈 구조") print("=" * 80) print() # 모듈 구조 출력 print("📁 strategies/impls/") print("├── __init__.py") print("├── trend_following.py # 추세 추종 전략") print("├── mean_reversion.py # 평균 회귀 전략") print("├── volatility_breakout.py # 변동성 돌파 전략") print("└── asset_allocation.py # 자산 배분 전략") print() print() # 레지스트리에 등록된 전략 목록 print("=" * 80) print("등록된 전략 목록") print("=" * 80) print() available_strategies = StrategyRegistry.list_strategies() # 카테고리별로 그룹화 categories = { "추세 추종 (Trend Following)": ["MovingAverageCrossover"], "평균 회귀 (Mean Reversion)": ["RSIMeanReversion"], "변동성 돌파 (Volatility Breakout)": ["BollingerBandBreakout"], "자산 배분 (Asset Allocation)": ["BoldAssetAllocation"], } for category, strategy_names in categories.items(): print(f"📊 {category}") print("-" * 80) for strategy_name in strategy_names: if strategy_name in available_strategies: strategy_info = available_strategies[strategy_name] print(f"\n ✓ {strategy_name}") print(f" 설명: {strategy_info['description']}") for version_info in strategy_info['versions']: print(f" 버전: {version_info['version']}") print(f" 파라미터:") for param, value in version_info['default_parameters'].items(): if isinstance(value, (int, float)): print(f" - {param}: {value}") elif isinstance(value, bool): print(f" - {param}: {value}") elif isinstance(value, str) and value: print(f" - {param}: '{value}'") elif value is None: print(f" - {param}: null") print() # 통계 print("=" * 80) print("통계") print("=" * 80) total = len(available_strategies) print(f"총 전략 수: {total}개") print(f"카테고리 수: {len(categories)}개") print() # 파일 크기 확인 print("=" * 80) print("모듈 파일 크기") print("=" * 80) impls_dir = os.path.join(os.path.dirname(__file__), "strategies", "impls") files = { "trend_following.py": "추세 추종", "mean_reversion.py": "평균 회귀", "volatility_breakout.py": "변동성 돌파", "asset_allocation.py": "자산 배분" } for filename, description in files.items(): filepath = os.path.join(impls_dir, filename) if os.path.exists(filepath): size = os.path.getsize(filepath) lines = sum(1 for _ in open(filepath, 'r', encoding='utf-8')) print(f"{filename:25s} ({description:12s}): {size:6,d} bytes, {lines:4d} lines") print() if __name__ == "__main__": main()