Die Ressourcen sind geladen. Beförderung...

Adaptives Handelssystem auf Basis von doppelten RSI-Indikatoren

Schriftsteller:ChaoZhang, Datum: 2024-12-13 11:57:17
Tags:RSISLTPMMATRRR

img

Übersicht

Diese Strategie ist ein anpassungsfähiges Handelssystem, das auf doppelten RSI-Indikatoren (Relative Strength Index) basiert. Es kombiniert RSI-Indikatoren aus verschiedenen Zeitrahmen, um Markttrends und Handelschancen zu identifizieren und gleichzeitig die Handelsleistung durch Geldmanagement und Risikokontrollmechanismen zu optimieren.

Strategieprinzipien

Die Strategie verwendet einen 7-Perioden-RSI-Indikator als primäres Handelssignal, kombiniert mit einem täglichen RSI als Trendfilter. Eine Long-Position wird eingeleitet, wenn der kurzfristige RSI über 40 bricht und der tägliche RSI über 55 liegt. Wenn der Preis während einer Position unter den ursprünglichen Einstiegspreis fällt, fügt das System automatisch zur Position hinzu, um die durchschnittlichen Kosten zu senken. Positionen werden geschlossen, wenn der RSI unter 60 bricht. Für die Risikokontrolle wird ein Stop-Loss von 5% implementiert. Die Strategie enthält auch ein Geldmanagement-Modul, das automatisch Positionsgrößen auf der Grundlage des Gesamtkapitals und vorgegebenen Risikorezipien berechnet.

Strategische Vorteile

  1. Die Kombination von mehrperiodischen RSI verbessert die Signalzuverlässigkeit
  2. Durch den adaptiven Mechanismus zur Mittelung der Positionen werden die Lagerhaltungskosten wirksam reduziert
  3. Ein umfassendes Geldmanagementsystem passt Positionen anhand der Risikopräferenz an
  4. Festes Stop-Loss-Schutz steuert das Risiko pro Handel streng
  5. Betrachtet Handelskosten für realistischere Handelsbedingungen

Strategische Risiken

  1. RSI-Indikatoren können in volatilen Märkten falsche Signale erzeugen
  2. Der Mechanismus der Positionsdurchschnittung kann bei anhaltenden Abwärtstrends zu erheblichen Verlusten führen
  3. Festprozentualer Stop-Loss kann in Zeiten hoher Volatilität zu konservativ sein
  4. Handelskosten können bei häufigem Handel erhebliche Auswirkungen auf die Rendite haben
  5. Die Umsetzung der Strategie erfordert ausreichende Liquidität

Optimierungsrichtlinien

  1. Einbeziehung von Volatilitätsindikatoren (wie ATR) für die dynamische Stop-Loss-Anpassung
  2. Hinzufügen von Trendstärkenfiltern zur Verringerung falscher Signale in verschiedenen Märkten
  3. Optimierung der Positionsdurchschnittslogik mit dynamischen Anpassungen basierend auf der Marktvolatilität
  4. Hinzufügen von RSI-Bestätigungen aus zusätzlichen Zeitrahmen
  5. Entwicklung eines anpassungsfähigen Positionsgrößensystems

Zusammenfassung

Das ist ein komplettes Handelssystem, das technische Analyse und Risikomanagement kombiniert. Es erzeugt Handelssignale durch mehrjährige RSI-Koordination und kontrolliert das Risiko durch Geldmanagement und Stop-Loss-Mechanismen. Die Strategie eignet sich für Trendmärkte, erfordert jedoch eine Optimierung der Parameter basierend auf den tatsächlichen Marktbedingungen. Die gute Erweiterbarkeit des Systems lässt Raum für weitere Optimierungen.


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

//@version=5
strategy("Dual RSI with Rebuy Logic + Capital, Commission, and Stop Loss", overlay=true)

// Parameter
rsi_length = input.int(7, title="RSI Length")
daily_rsi_length = input.int(7, title="Daily RSI Length")
capital = input.float(10000, title="Initial Capital", minval=0)  // Kapital
risk_per_trade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=1.0)  // Risikogröße in Prozent
commission = input.float(0.1, title="Commission (%)", minval=0, maxval=100)  // Kommission in Prozent
stop_loss_pct = input.float(5, title="Stop Loss (%)", minval=0.1, maxval=100)  // Stop-Loss in Prozent

// Ordergröße berechnen
risk_amount = capital * risk_per_trade
order_size = risk_amount / close  // Größe der Order basierend auf Risikogröße und Preis

// Daily RSI
day_rsi = request.security(syminfo.tickerid, "D", ta.rsi(close, daily_rsi_length), lookahead=barmerge.lookahead_on)

// RSI auf aktuellem Timeframe
rsi = ta.rsi(close, rsi_length)

// Kauf- und Verkaufsbedingungen
buy_condition = rsi[1] < 40 and rsi > rsi[1] and day_rsi > 55
sell_condition = rsi[1] > 60 and rsi < rsi[1]

// Variablen, um den Preis des ersten Kaufs zu speichern
var float first_buy_price = na
var bool is_position_open = false

// Kauf-Logik
if buy_condition
    if not is_position_open
        // Initiales Kaufsignal
        strategy.entry("Buy", strategy.long, qty=1)
        first_buy_price := close
        is_position_open := true
    else if close < first_buy_price
        // Rebuy-Signal, nur wenn Preis niedriger als erster Kaufpreis
        strategy.entry("Rebuy", strategy.long, qty=1)

// Verkaufs-Logik
if sell_condition and is_position_open
    strategy.close("Buy")
    strategy.close("Rebuy")
    first_buy_price := na  // Zurücksetzen des Kaufpreises
    is_position_open := false

// Stop-Loss-Bedingung
if is_position_open
    // Stop-Loss-Preis berechnen (5% unter dem Einstiegspreis)
    stop_loss_price = first_buy_price * (1 - stop_loss_pct / 100)
    
    // Stop-Loss für "Buy" und "Rebuy" festlegen
    strategy.exit("Stop Loss Buy", from_entry="Buy", stop=stop_loss_price)
    strategy.exit("Stop Loss Rebuy", from_entry="Rebuy", stop=stop_loss_price)

// Performance-Metriken berechnen (mit Kommission)
gross_profit = strategy.netprofit / capital * 100
commission_cost = commission / 100 * strategy.closedtrades
net_profit = gross_profit - commission_cost

// Debug-Plots
plot(first_buy_price, title="First Buy Price", color=color.blue, linewidth=1)
plotchar(buy_condition, title="Buy Condition", char='B', location=location.abovebar, color=color.green)
plotchar(sell_condition, title="Sell Condition", char='S', location=location.belowbar, color=color.red)

// Debugging für Performance



Verwandt

Mehr