Files
trader-ml/Makefile
Tika da30ef19ed Initial commit — Trading AI Secure project complet
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>
2026-03-08 17:38:09 +00:00

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