Diese Strategie kombiniert Impulsindikatoren mit dem Relative Strength Index (RSI) zusammen mit einem dynamischen Trailing Stop-Mechanismus, um die Trendrichtung zu erfassen und gleichzeitig das Risiko zu kontrollieren.
Verwenden Sie den ADX-Indikator, um die Kursentwicklung zu bestimmen
ADX über 20 zeigt, dass ein Trend besteht
+DI über -DI ist ein langes Signal
- DI unter +DI ist ein kurzes Signal
RSI zur Ermittlung von Überkauf/Überverkauf
Der RSI über 70 deutet auf einen Überkauf und ein Kurzsignal hin
Der RSI unter 30 deutet auf einen Überverkauf und ein Long Signal hin.
Lange/kurze Positionen einnehmen, wenn der ADX einen Trend + ein RSI-Bestätigungssignal zeigt.
Die Strategie verwendet einen dynamischen Trailing Stop-Mechanismus mit zwei Parametern:
Aktivierungsstufe: Aktivieren von Trailing Stop, wenn der Preis nach dem Eintritt den festgelegten Prozentsatz erreicht
Verzögerungsanteil: Höchster Gewinnanteil bei Steigerung der Steigerung der Steigerung der Steigerung
Einmal aktiviert, folgt der Trailing-Stop dem höchsten Gewinnniveau. Wenn der Preis sich zurückzieht, bewegt sich der Stop-Level niedriger. Wenn der Rückzug den Trail-Prozentsatz übersteigt, wird der Stop ausgelöst und alle Positionen geschlossen.
Momentum ADX bestimmt die Trendrichtung und vermeidet falsche Ausbrüche
RSI-Bestätigung sorgt dafür, dass Umkehrmöglichkeiten nicht verpasst werden
Ein verstellbarer Trailing Stop sichert Gewinn und minimiert Verluste
Einfache und klare Strategie-Logik, leicht verständlich
Anwendbar auf verschiedene Märkte und Zeitrahmen
ADX kann einen falschen Ausbruch signalisieren
RSI kann mehrere falsche Signale geben
Schlechte Rückhaltparameter
Lücken können zu verpassten Haltestellen führen
Prüfung von ADX/RSI-Kombinationen zur Optimierung von Einträgen
Backtest verschiedener Aktivierungsstufen und Spuranteile
Hinzufügen von zusätzlichen Filtern zur Verbesserung der Signalqualität
Test auf verschiedenen Märkten, um zuverlässige Parameter zu finden
Diese Strategie integriert Momentum-Analyse, RSI und Trailing Stops, um effektiv die Trendrichtung, Spot-Umkehrungen und Risikokontrolle zu bestimmen. Die einfache Logik macht es einfach, auf Aktien-, Devisen-, Krypto- und anderen Trendmärkten umzusetzen. Weitere Verbesserungen können durch Parameteroptimierung und das Hinzufügen von Filtern erzielt werden.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-03 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trailing Stop with RSI", overlay=true) length = input.int(12, "Momentum Length") price = close momentum(seria, length) => mom = seria - seria[length] mom mom0 = momentum(price, length) mom1 = momentum(mom0, 1) rsiLength = input.int(14, "RSI Length") rsiOverbought = input(70, "RSI Overbought Level") rsiOversold = input(30, "RSI Oversold Level") rsiValue = ta.rsi(close, rsiLength) tsact = input.float(0.0, "Trailing Stop Activation (%)", group="strategy", tooltip="Activates the Trailing Stop once this PnL is reached.") / 100 tsact := tsact ? tsact : na ts = input.float(0.0, "Position Trailing Stop (%)", group="strategy", tooltip="Trails your position with a stop loss at this distance from the highest PnL") / 100 ts := ts ? ts : na in_long = strategy.position_size > 0 in_short = strategy.position_size < 0 var ts_ = array.new_float() ts_size = array.size(ts_) ts_get = ts_size > 0 ? array.get(ts_, ts_size - 1) : 0 if in_long if tsact and high > strategy.position_avg_price + strategy.position_avg_price * tsact if ts_size > 0 and ts_get < high array.push(ts_, high) if ts_size < 1 array.push(ts_, high) if not tsact if ts_size > 0 and ts_get < high array.push(ts_, high) if ts_size < 1 array.push(ts_, high) if in_short if tsact and low < strategy.position_avg_price - strategy.position_avg_price * tsact if ts_size > 0 and ts_get > low array.push(ts_, low) if ts_size < 1 array.push(ts_, low) if not tsact if ts_size > 0 and ts_get > low array.push(ts_, low) if ts_size < 1 array.push(ts_, low) trail = in_long and ts_size > 0 ? low < ts_get - ts_get * ts : in_short and ts_size > 0 ? high > ts_get + ts_get * ts : na if (mom0 > 0 and mom1 > 0) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (mom0 < 0 and mom1 < 0) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") tsClose = in_long ? ts_get - ts_get * ts : in_short ? ts_get + ts_get * ts : na if trail strategy.close_all() if not strategy.opentrades array.clear(ts_) rsiOverboughtCondition = rsiValue >= rsiOverbought rsiOversoldCondition = rsiValue <= rsiOversold if rsiOverboughtCondition strategy.close("SHORT", "SX") strategy.entry("LONG", strategy.long) if rsiOversoldCondition strategy.close("LONG", "LX") strategy.entry("SHORT", strategy.short) plotchar(ts_get, "GET", "") plot(strategy.position_avg_price > 0 ? strategy.position_avg_price : na, "Average", color.rgb(251, 139, 64), 2, plot.style_cross) plot(tsClose > 0 ? tsClose : na, "Trailing", color.rgb(251, 64, 64), 2, plot.style_cross) plot(strategy.position_avg_price - strategy.position_avg_price * tsact > 0 ? strategy.position_avg_price - strategy.position_avg_price * tsact : na, "TS Activation", color.fuchsia, 2, plot.style_cross)