RSI dynamische Stop-Loss-Strategie für intelligentes Trading

RSI SMA ATR
Erstellungsdatum: 2024-11-12 11:39:06 zuletzt geändert: 2024-11-12 11:39:06
Kopie: 2 Klicks: 503
1
konzentrieren Sie sich auf
1617
Anhänger

RSI dynamische Stop-Loss-Strategie für intelligentes Trading

Überblick

Die Strategie ist ein auf dem RSI basierendes dynamisches Stop-Loss-Trading-System, das die SMA-Mittellinie und den ATR-Wellenlängen-Indikator kombiniert, um die Handelsentscheidung zu optimieren. Die Strategie verwendet ein mehrschichtiges Stop-Off-System, um die Erträge durch eine Pyramiden-Platzposition zu maximieren, während ATR-Dynamische Stop-Loss verwendet wird, um das Risiko zu kontrollieren. Die Strategie ist hochgradig anpassungsfähig und kann die Handelsparameter automatisch an die Marktschwankungen anpassen.

Strategieprinzip

Die Strategie basiert hauptsächlich auf dem RSI-Überverkaufsbereich ((RSI<30) als Positionsöffnungssignal und verlangt, dass der Preis oberhalb des 200-Tages-Durchschnitts liegt, um sicherzustellen, dass er im Aufwärtstrend ist. Das System verwendet ein Dreifach-Stopp-Ziel ((5%, 10%, 15%) und kombiniert mit einem ATR-Dynamischen Stop-Loss).

  1. Einstiegsvoraussetzungen: RSI unter 30 und Preis über SMA 200
  2. Positionsverwaltung: 75% der Gelder für eine einzelne Position
  3. Stop-Loss-Einstellung: Dynamischer Stop-Loss basierend auf dem 1,5-fachen ATR-Wert
  4. Stop-Off-Strategie: Setzen Sie drei Stop-Off-Punkte in Positionen von 5%, 10% und 15%, wobei Sie die Positionen im Verhältnis von 33%, 66% und 100% platten

Strategische Vorteile

  1. Dynamisches Risikomanagement: Anpassung an Marktschwankungen durch ATR
  2. Bündelung von Schrott: Verringerung der emotionalen Störungen und Verbesserung der Gewinnchancen
  3. Trendbestätigung: Falschsignale mit Gleichschaltfilter
  4. Vermögensverwaltung: Prozentsatzliche Positionskontrolle für unterschiedliche Kontogrößen
  5. Optimierung der Provisionen: Die Transaktionskosten werden berücksichtigt, um den tatsächlichen Transaktionen näher zu kommen

Strategisches Risiko

  1. Durchschnittliche Verzögerung kann zu Verzögerungen führen
  2. RSI-Übertreibungen bedeuten nicht unbedingt eine Umkehrung
  3. Ein hoher Anteil könnte zu einem größeren Rückzug führen.
  4. Häufige Batch-Stopps können die Transaktionskosten erhöhen Es wird empfohlen, diese Risiken zu verwalten, indem Parameter angepasst und Filterbedingungen hinzugefügt werden.

Richtung der Strategieoptimierung

  1. Bestätigungssignal zur Erhöhung der Lautstärke
  2. Einführung des Trendstärkeindikators
  3. Optimierung der Verteilung der Dämpfungsquote
  4. Hinzufügen von Zeitrahmenfilter
  5. Erwägen Sie die Einbeziehung von Positionsverwaltung, die sich an die Volatilität anpasst

Zusammenfassen

Die Strategie kombiniert technische Kennzahlen mit dynamischem Risikomanagement und baut ein relativ vollständiges Handelssystem auf. Ihr Vorteil besteht darin, dass sie anpassungsfähig und risikokontrollierbar ist, aber immer noch Parameter für die tatsächlichen Marktbedingungen optimiert werden müssen. Die Strategie ist für mittelfristige und langfristige Investoren geeignet und bietet einen guten Ausgangspunkt für systematische Geschäfte.

Strategiequellcode
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef