Architecture Docker (8 services), FastAPI, TimescaleDB, Redis, Streamlit. Stratégies : scalping, intraday, swing. MLEngine + RegimeDetector (HMM). BacktestEngine + WalkForwardAnalyzer + Optuna optimizer. Routes API complètes dont /optimize async. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
181 lines
6.4 KiB
Makefile
181 lines
6.4 KiB
Makefile
# Makefile pour Trading AI Secure
|
|
# Facilite les commandes courantes
|
|
|
|
.PHONY: help install test lint format clean run-backtest run-paper \
|
|
docker-build docker-up docker-down docker-logs docker-restart \
|
|
docker-api-logs docker-ml-logs docker-ps
|
|
|
|
# Couleurs pour output
|
|
BLUE := \033[0;34m
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
RED := \033[0;31m
|
|
NC := \033[0m # No Color
|
|
|
|
help: ## Affiche cette aide
|
|
@echo "$(BLUE)Trading AI Secure - Commandes Disponibles$(NC)"
|
|
@echo ""
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "$(GREEN)%-20s$(NC) %s\n", $$1, $$2}'
|
|
|
|
install: ## Installe les dépendances
|
|
@echo "$(BLUE)Installation des dépendances...$(NC)"
|
|
pip install -r requirements.txt
|
|
@echo "$(GREEN)✅ Installation terminée$(NC)"
|
|
|
|
install-dev: ## Installe dépendances + outils dev
|
|
@echo "$(BLUE)Installation dépendances dev...$(NC)"
|
|
pip install -r requirements.txt
|
|
pip install pytest pytest-cov pytest-asyncio black pylint isort
|
|
@echo "$(GREEN)✅ Installation dev terminée$(NC)"
|
|
|
|
test: ## Lance tous les tests
|
|
@echo "$(BLUE)Lancement des tests...$(NC)"
|
|
python run_tests.py
|
|
|
|
test-unit: ## Lance tests unitaires
|
|
@echo "$(BLUE)Lancement tests unitaires...$(NC)"
|
|
python run_tests.py --unit
|
|
|
|
test-coverage: ## Lance tests avec coverage
|
|
@echo "$(BLUE)Lancement tests avec coverage...$(NC)"
|
|
python run_tests.py --coverage
|
|
@echo "$(GREEN)✅ Rapport coverage généré dans htmlcov/$(NC)"
|
|
|
|
lint: ## Vérifie le code avec pylint
|
|
@echo "$(BLUE)Vérification du code...$(NC)"
|
|
pylint src/
|
|
|
|
format: ## Formate le code avec black et isort
|
|
@echo "$(BLUE)Formatage du code...$(NC)"
|
|
black src/ tests/
|
|
isort src/ tests/
|
|
@echo "$(GREEN)✅ Code formaté$(NC)"
|
|
|
|
format-check: ## Vérifie le formatage sans modifier
|
|
@echo "$(BLUE)Vérification formatage...$(NC)"
|
|
black --check src/ tests/
|
|
isort --check-only src/ tests/
|
|
|
|
clean: ## Nettoie les fichiers temporaires
|
|
@echo "$(BLUE)Nettoyage...$(NC)"
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name ".coverage" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name "htmlcov" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
@echo "$(GREEN)✅ Nettoyage terminé$(NC)"
|
|
|
|
setup-config: ## Copie les fichiers de configuration
|
|
@echo "$(BLUE)Configuration du projet...$(NC)"
|
|
cp config/risk_limits.example.yaml config/risk_limits.yaml
|
|
cp config/strategy_params.example.yaml config/strategy_params.yaml
|
|
cp config/data_sources.example.yaml config/data_sources.yaml
|
|
@echo "$(GREEN)✅ Fichiers de configuration créés$(NC)"
|
|
@echo "$(YELLOW)⚠️ Éditer les fichiers dans config/ selon vos besoins$(NC)"
|
|
|
|
run-example: ## Lance l'exemple simple
|
|
@echo "$(BLUE)Lancement exemple simple...$(NC)"
|
|
python examples/simple_backtest.py
|
|
|
|
run-backtest: ## Lance backtest interactif
|
|
@echo "$(BLUE)Lancement backtest...$(NC)"
|
|
python src/main.py --mode backtest --strategy intraday --symbol EURUSD --period 6m
|
|
|
|
run-paper: ## Lance paper trading
|
|
@echo "$(BLUE)Lancement paper trading...$(NC)"
|
|
@echo "$(YELLOW)⚠️ Appuyez sur Ctrl+C pour arrêter$(NC)"
|
|
python src/main.py --mode paper --strategy intraday
|
|
|
|
run-optimize: ## Lance optimisation paramètres
|
|
@echo "$(BLUE)Lancement optimisation...$(NC)"
|
|
python src/main.py --mode optimize --strategy intraday --n-trials 50
|
|
|
|
dashboard: ## Lance le dashboard Streamlit
|
|
@echo "$(BLUE)Lancement dashboard...$(NC)"
|
|
streamlit run src/ui/dashboard.py
|
|
|
|
logs: ## Affiche les logs en temps réel
|
|
@echo "$(BLUE)Logs en temps réel...$(NC)"
|
|
tail -f logs/trading.log
|
|
|
|
check-all: format-check lint test ## Vérifie tout (format, lint, tests)
|
|
@echo "$(GREEN)✅ Toutes les vérifications passées$(NC)"
|
|
|
|
init: install setup-config ## Initialisation complète du projet
|
|
@echo "$(GREEN)✅ Projet initialisé$(NC)"
|
|
@echo ""
|
|
@echo "$(BLUE)Prochaines étapes:$(NC)"
|
|
@echo "1. Éditer les fichiers de configuration dans config/"
|
|
@echo "2. Lancer les tests: make test"
|
|
@echo "3. Lancer un exemple: make run-example"
|
|
|
|
# ============================================================
|
|
# DOCKER
|
|
# ============================================================
|
|
|
|
docker-build: ## Build toutes les images Docker
|
|
@echo "$(BLUE)Build des images Docker...$(NC)"
|
|
docker compose build
|
|
@echo "$(GREEN)✅ Images buildées$(NC)"
|
|
|
|
docker-build-nocache: ## Build sans cache (force rebuild complet)
|
|
@echo "$(BLUE)Build sans cache...$(NC)"
|
|
docker compose build --no-cache
|
|
@echo "$(GREEN)✅ Build terminé$(NC)"
|
|
|
|
docker-up: ## Démarre tous les services
|
|
@echo "$(BLUE)Démarrage des services...$(NC)"
|
|
docker compose up -d
|
|
@echo "$(GREEN)✅ Services démarrés$(NC)"
|
|
@echo ""
|
|
@echo "$(BLUE)Services disponibles :$(NC)"
|
|
@echo " API → http://localhost:8100/docs"
|
|
@echo " ML → http://localhost:8200/docs"
|
|
@echo " Dashboard → http://localhost:8501"
|
|
@echo " Jupyter → http://localhost:8888"
|
|
@echo " Grafana → http://localhost:3100"
|
|
|
|
docker-down: ## Arrête tous les services
|
|
@echo "$(BLUE)Arrêt des services...$(NC)"
|
|
docker compose down
|
|
@echo "$(GREEN)✅ Services arrêtés$(NC)"
|
|
|
|
docker-down-volumes: ## Arrête les services ET supprime les volumes (DANGER: perte données DB)
|
|
@echo "$(RED)⚠️ Suppression des volumes ! Toutes les données DB seront perdues.$(NC)"
|
|
@read -p "Continuer ? (yes/no) : " confirm && [ "$$confirm" = "yes" ] || exit 1
|
|
docker compose down -v
|
|
@echo "$(GREEN)✅ Services et volumes supprimés$(NC)"
|
|
|
|
docker-restart: ## Redémarre tous les services
|
|
docker compose restart
|
|
|
|
docker-ps: ## Affiche l'état des containers
|
|
docker compose ps
|
|
|
|
docker-logs: ## Affiche les logs de tous les services
|
|
docker compose logs -f
|
|
|
|
docker-api-logs: ## Logs du service API
|
|
docker compose logs -f trading-api
|
|
|
|
docker-ml-logs: ## Logs du service ML
|
|
docker compose logs -f trading-ml
|
|
|
|
docker-dashboard-logs: ## Logs du dashboard Streamlit
|
|
docker compose logs -f trading-dashboard
|
|
|
|
docker-db-logs: ## Logs de la base de données
|
|
docker compose logs -f trading-db
|
|
|
|
docker-init: ## Initialisation complète : copie .env + build + démarrage
|
|
@echo "$(BLUE)Initialisation Docker...$(NC)"
|
|
@if [ ! -f .env ]; then \
|
|
cp .env.example .env; \
|
|
echo "$(YELLOW)⚠️ .env créé depuis .env.example - Éditer les mots de passe !$(NC)"; \
|
|
fi
|
|
$(MAKE) docker-build
|
|
$(MAKE) docker-up
|
|
|
|
.DEFAULT_GOAL := help
|