Die Ressourcen sind geladen. Beförderung...

RSI Dynamische intelligente Stop-Loss-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-11-12 11:39:06
Tags:RSISMAATR

img

Übersicht

Diese Strategie ist ein dynamisches Stop-Loss-Handelssystem, das auf dem RSI-Indikator basiert und SMA- und ATR-Indikatoren kombiniert, um Handelsentscheidungen zu optimieren.

Strategieprinzipien

Die Strategie verwendet hauptsächlich RSI-Überverkaufsbedingungen (RSI<30) als Einstiegssignale, wobei der Preis über dem gleitenden 200-Tage-Durchschnitt liegen muss, um einen Aufwärtstrend zu gewährleisten.

  1. Einstiegsbedingungen: RSI unter 30 und Preis über SMA200
  2. Positionsmanagement: 75% des Kapitals pro Handel
  3. Stopp-Loss: Dynamischer Stopp auf Basis von 1,5x ATR
  4. Gewinnübernahme: Drei Niveaus bei 5%, 10%, 15%, Abschluss 33%, 66% bzw. 100%

Strategische Vorteile

  1. Dynamisches Risikomanagement: Anpassung der ATR an die Marktvolatilität
  2. Profitgewinnung in mehreren Phasen: Verringert emotionale Störungen und erhöht die Gewinnwahrscheinlichkeit
  3. Trendbestätigung: Verwendet gleitenden Durchschnitt, um falsche Signale zu filtern
  4. Geldverwaltung: Prozentsatzbasierte Positionsgröße für verschiedene Kontogrößen
  5. Optimierung durch die Kommission: Berücksichtigung der Handelskosten für die praktische Umsetzung

Strategische Risiken

  1. Die Verzögerung des gleitenden Durchschnitts kann die Einträge verzögern
  2. RSI-Überverkauf garantiert keine Umkehrung
  3. Große Positionsgrößen können zu erheblichen Rückzügen führen
  4. Häufige Teilausstiege können die Handelskosten erhöhen Diese Risiken können durch Parameteranpassungen und zusätzliche Filter gesteuert werden.

Optimierungsrichtlinien

  1. Zusatz von Lautstärke-Bestätigungssignalen
  2. Einbeziehung von Indikatoren für die Trendstärke
  3. Optimierung der Gewinnquote
  4. Hinzufügen von Zeitrahmenfiltern
  5. Anpassung der Positionsgröße an Volatilität

Zusammenfassung

Diese Strategie kombiniert technische Indikatoren mit dynamischem Risikomanagement, um ein umfassendes Handelssystem zu schaffen. Ihre Stärken liegen in der Anpassungsfähigkeit und dem kontrollierten Risiko, obwohl eine Optimierung der Parameter auf der Grundlage der Marktbedingungen immer noch erforderlich ist. Die Strategie eignet sich für mittelfristige bis langfristige Investoren und dient als solide Grundlage für systematischen Handel.


/*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

Verwandt

Mehr