Diese Strategie ist ein quantitatives Handelssystem, das auf gleitenden Durchschnitten, RSI-Indikatoren und Trailing Stop Loss basiert. Es kombiniert Trend- und Dynamikindikatoren aus der technischen Analyse, um durch strenge Ein- und Ausstiegsbedingungen einen risikokontrollierten Handel zu erreichen. Die Kernlogik besteht darin, in Auftrends nach Überverkaufsmöglichkeiten zu suchen und Gewinne mit Trailing Stops zu schützen.
Die Strategie verwendet einen 200-tägigen einfachen gleitenden Durchschnitt (SMA) als Basis für das Trendbeurteil, kombiniert mit dem Relative Strength Index (RSI) zur Erzeugung von Handelssignalen. 1. Verwendet den 200-Tage-SMA, um den Haupttrend zu beurteilen, wobei nur lange Positionen berücksichtigt werden, wenn der Preis über dem Durchschnitt liegt 2. Identifiziert Überverkaufssignale, wenn der RSI unter den vorgegebenen Schwellenwert fällt (Standard 40) 3. Auslöst einen langen Eintrag, wenn beide Bedingungen erfüllt sind und die Wartezeit seit dem letzten Ausgang (Standard 10 Tage) abgelaufen ist 4. Schützt Gewinne während der Positionshaltung durch Trailing Stop Loss (Standard 5%) 5. Verlässt die Position, wenn der Preis unter den Trailing Stop oder den 200-Tage-SMA fällt
Dies ist eine quantitative Handelsstrategie mit vollständiger Struktur und klarer Logik. Sie verfolgt stabile Renditen und kontrolliert gleichzeitig das Risiko, indem sie mehrere technische Indikatoren kombiniert. Obwohl Optimierungsmöglichkeiten bestehen, hat der grundlegende Rahmen eine gute Praktikabilität und Erweiterbarkeit. Die Strategie eignet sich für mittelfristige und langfristige Investoren und passt sich gut an verschiedene Marktumgebungen an.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("200 SMA Crossover Strategy", overlay=false) // Define inputs smaLength = input.int(200, title="SMA Length") rsiLength = input.int(14, title="RSI Length") rsiThreshold = input.float(40, title="RSI Threshold") trailStopPercent = input.float(5.0, title="Trailing Stop Loss (%)") waitingPeriod = input.int(10, title="Waiting Period (Days)") // Calculate 200 SMA sma200 = ta.sma(close, smaLength) // Calculate RSI rsi = ta.rsi(close, rsiLength) // Plot the 200 SMA and RSI plot(sma200, color=color.blue, linewidth=2, title="200 SMA") plot(rsi, color=color.purple, title="RSI", display=display.none) // Define buy and sell conditions var isLong = false var float lastExitTime = na var float trailStopPrice = na // Explicitly declare timeSinceExit as float float timeSinceExit = na(lastExitTime) ? na : (time - lastExitTime) / (24 * 60 * 60 * 1000) canEnter = na(lastExitTime) or timeSinceExit > waitingPeriod buyCondition = close > sma200 and rsi < rsiThreshold and canEnter if (buyCondition and not isLong) strategy.entry("Buy", strategy.long) trailStopPrice := na isLong := true // Update trailing stop loss if long if (isLong) trailStopPrice := na(trailStopPrice) ? close * (1 - trailStopPercent / 100) : math.max(trailStopPrice, close * (1 - trailStopPercent / 100)) // Check for trailing stop loss or sell condition if (isLong and (close < trailStopPrice or close < sma200)) strategy.close("Buy") lastExitTime := time isLong := false // Plot buy and sell signals plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=(isLong and close < trailStopPrice) or close < sma200, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")