feat: 프로젝트 기본 구조 구축
This commit is contained in:
98
list_strategies.py
Executable file
98
list_strategies.py
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user