Dies ist eine Trendfolgestrategie, die auf dem SuperTrend-Indikator, dem Exponential Moving Average (EMA) und dem Average True Range (ATR) basiert. Die Strategie erzielt dynamisches Trendverfolgen und Risikokontrolle durch die Kombination mehrerer technischer Indikatoren, anfänglichen Stop-Loss und Trailing Stop-Loss. Der Kern der Strategie besteht darin, Trendrichtungänderungen mithilfe des SuperTrend-Indikators zu erfassen, während EMA zur Trendbestätigung verwendet wird und Doppel-Stop-Loss-Mechanismen zum Schutz der Gewinne eingerichtet werden.
Die Strategie beruht auf folgenden Kernbestandteilen: 1. SuperTrend-Indikator zur Ermittlung von Trendbewegungsänderungen, berechnet mit einer ATR-Periode von 16 und einem Faktor von 3,02 2. 49-Zeitrahmen-EMA als Trendfilter zur Bestätigung der Trendrichtung 3. Anfangs Stop-Loss auf 50 Punkte festgelegt, der für jeden Handel einen grundlegenden Schutz bietet 4. Trailing Stop Loss aktiviert sich nach einem Gewinn von 70 Punkten und verfolgt dynamisch die Preisänderungen
Das System erzeugt lange Signale, wenn die SuperTrend-Richtung nach unten und der Schlusskurs über der EMA geht, vorausgesetzt, es gibt keine bestehende Position. Umgekehrt werden kurze Signale erzeugt, wenn die SuperTrend-Richtung nach oben und der Schlusskurs unter der EMA geht.
Dies ist eine vollständige Handelsstrategie, die mehrere technische Indikatoren und Risikokontrollmechanismen kombiniert. Sie erzielt ein günstiges Risiko-Rendite-Verhältnis durch Trend-Erfassung mit SuperTrend-Indikator, Richtungsbestätigung mit EMA, gepaart mit doppelten Stop-Loss-Mechanismen. Das Optimierungspotenzial der Strategie liegt hauptsächlich in der dynamischen Parameteranpassung, der Bewertung des Marktumfelds und der Verbesserung des Risikomanagementsystems. In der praktischen Anwendung wird empfohlen, gründliche historische Daten-Backtesting durchzuführen und Parameter entsprechend den spezifischen Handelsinstrumentencharakteristika anzupassen.
/*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