Il s'agit d'une stratégie de suivi de tendance basée sur l'indicateur de SuperTrend, l'Average Mobilité Exponentiel (EMA) et la Plage Véritable Moyenne (ATR). La stratégie permet de suivre la tendance dynamique et de contrôler les risques grâce à la combinaison de plusieurs indicateurs techniques, d'un stop-loss initial et d'un stop-loss de suivi.
La stratégie fonctionne sur la base des éléments clés suivants: Indicateur de SuperTrend pour l'identification des changements de direction de la tendance, calculé avec une période ATR de 16 et un facteur de 3,02 2. EMA à 49 périodes comme filtre de tendance pour confirmer la direction de la tendance 3. Le stop loss initial fixé à 50 points fournissant une protection de base pour chaque transaction 4. Le stop-loss de suivi s'active après un profit de 70 points, suivant dynamiquement les changements de prix
Le système génère des signaux longs lorsque la direction de la SuperTrend est à la baisse et que le prix de clôture est supérieur à la EMA, à condition qu'il n'y ait pas de position existante.
Il s'agit d'une stratégie de trading complète combinant plusieurs indicateurs techniques et mécanismes de contrôle des risques. Il atteint un rapport risque-rendement favorable grâce à la capture de tendance avec l'indicateur SuperTrend, la confirmation de direction avec l'EMA, couplée à des mécanismes de double stop loss. Le potentiel d'optimisation de la stratégie réside principalement dans l'ajustement dynamique des paramètres, l'évaluation de l'environnement du marché et l'amélioration du système de gestion des risques. Dans l'application pratique, il est recommandé de mener un backtesting approfondi des données historiques et d'ajuster les paramètres en fonction des caractéristiques spécifiques de l'instrument de trading.
/*backtest start: 2024-01-17 00:00:00 end: 2025-01-15 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy(" nifty supertrend triton", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Input parameters atrPeriod = input.int(16, "ATR Length", step=1) factor = input.float(3.02, "Factor", step=0.01) maPeriod = input.int(49, "Moving Average Period", step=1) trailPoints = input.int(70, "Trailing Points", step=1) // Points after which trailing stop activates initialStopLossPoints = input.int(50, "Initial Stop Loss Points", step=1) // Initial stop loss of 50 points // Calculate Supertrend [_, direction] = ta.supertrend(factor, atrPeriod) // Calculate EMA ema = ta.ema(close, maPeriod) // Variables to track stop loss levels var float trailStop = na var float entryPrice = na var float initialStopLoss = na // To track the initial stop loss // Generate buy and sell signals if ta.change(direction) < 0 and close > ema if strategy.position_size == 0 // Only open a new long position if no current position strategy.entry("Buy", strategy.long) entryPrice := close // Record the entry price for the long position initialStopLoss := entryPrice - initialStopLossPoints // Set initial stop loss for long position trailStop := na // Reset trailing stop for long if ta.change(direction) > 0 and close < ema if strategy.position_size == 0 // Only open a new short position if no current position strategy.entry("Sell", strategy.short) entryPrice := close // Record the entry price for the short position initialStopLoss := entryPrice + initialStopLossPoints // Set initial stop loss for short position trailStop := na // Reset trailing stop for short // Apply initial stop loss for long positions if (strategy.position_size > 0) // Check if in a long position if close <= initialStopLoss // If the price drops to or below the initial stop loss strategy.close("Buy", "Initial Stop Loss Hit") // Exit the long position // Apply trailing stop logic for long positions if (strategy.position_size > 0) // Check if in a long position if (close - entryPrice >= trailPoints) // If the price has moved up by the threshold trailStop := na(trailStop) ? close - trailPoints : math.max(trailStop, close - trailPoints) // Adjust trailing stop upwards if not na(trailStop) and close < trailStop // If the price drops below the trailing stop strategy.close("Buy", "Trailing Stop Hit") // Exit the long position // Apply initial stop loss for short positions if (strategy.position_size < 0) // Check if in a short position if close >= initialStopLoss // If the price rises to or above the initial stop loss strategy.close("Sell", "Initial Stop Loss Hit") // Exit the short position // Apply trailing stop logic for short positions if (strategy.position_size < 0) // Check if in a short position if (entryPrice - close >= trailPoints) // If the price has moved down by the threshold trailStop := na(trailStop) ? close + trailPoints : math.min(trailStop, close + trailPoints) // Adjust trailing stop downwards if not na(trailStop) and close > trailStop // If the price rises above the trailing stop strategy.close("Sell", "Trailing Stop Hit") // Exit the short position