summaryrefslogtreecommitdiff
path: root/services/api/src/trading_api/routers/strategies.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/api/src/trading_api/routers/strategies.py')
-rw-r--r--services/api/src/trading_api/routers/strategies.py33
1 files changed, 20 insertions, 13 deletions
diff --git a/services/api/src/trading_api/routers/strategies.py b/services/api/src/trading_api/routers/strategies.py
index 2861eec..e968529 100644
--- a/services/api/src/trading_api/routers/strategies.py
+++ b/services/api/src/trading_api/routers/strategies.py
@@ -1,30 +1,37 @@
"""Strategy endpoints."""
+import logging
import sys
from pathlib import Path
-from fastapi import APIRouter
+from fastapi import APIRouter, HTTPException
# Add strategy-engine to path for plugin loading
_STRATEGY_DIR = Path(__file__).resolve().parents[5] / "strategy-engine"
if str(_STRATEGY_DIR) not in sys.path:
sys.path.insert(0, str(_STRATEGY_DIR))
+logger = logging.getLogger(__name__)
+
router = APIRouter()
@router.get("/")
async def list_strategies():
"""List available strategies."""
- from strategy_engine.plugin_loader import load_strategies
-
- strategies_dir = _STRATEGY_DIR / "strategies"
- strategies = load_strategies(strategies_dir)
- return [
- {
- "name": s.name,
- "warmup_period": s.warmup_period,
- "class": type(s).__name__,
- }
- for s in strategies
- ]
+ try:
+ from strategy_engine.plugin_loader import load_strategies
+
+ strategies_dir = _STRATEGY_DIR / "strategies"
+ strategies = load_strategies(strategies_dir)
+ return [
+ {
+ "name": s.name,
+ "warmup_period": s.warmup_period,
+ "class": type(s).__name__,
+ }
+ for s in strategies
+ ]
+ except Exception as exc:
+ logger.error("Failed to list strategies: %s", exc)
+ raise HTTPException(status_code=500, detail="Failed to list strategies")