99 lines
3.3 KiB
Python
Executable File
99 lines
3.3 KiB
Python
Executable File
#!/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()
|