Die Ressourcen sind geladen. Beförderung...

Der Wert der Vermögenswerte, die für die Berechnung der Vermögenswerte verwendet werden.

Schriftsteller:ChaoZhang, Datum: 2024-11-29 16:18:55
Tags:RSISMAATRTPSL

img

Übersicht

Diese Strategie ist ein quantitatives Handelssystem, das auf RSI-Überverkaufssignalen und dynamischem ATR-Stop-Loss basiert. Mit Hilfe von täglichen Zeitrahmendaten kombiniert es RSI-Überverkaufssignalen mit einem 200-tägigen gleitenden Durchschnittstrendfilter, um Rebound-Möglichkeiten in überverkauften Marktbedingungen zu erfassen. Die Strategie verwendet sowohl dynamische ATR-Stop-Loss- als auch statische Prozentsatz-Stop-Loss-Mechanismen, zusammen mit dreifachen Gewinnzielen, die durch stufenweise Positionsreduktion umgesetzt werden.

Strategieprinzipien

Die Kernlogik umfasst folgende Schlüsselelemente:

  1. Eintrittssignal: Das System erzeugt Long-Signale, wenn der RSI (((5) unter den Überverkauf von 30 fällt und der Preis über dem gleitenden 200-Tage-Durchschnitt liegt.
  2. Der Stand-Loss-Mechanismus kombiniert den dynamischen Stand-Loss mit einem festgelegten Stand-Loss von 25%.
  3. Gewinnziele: Es werden drei Ziele von 5%, 10% und 15% festgelegt, wobei die Position um 33%, 66% bzw. 100% reduziert wird.
  4. Positionsmanagement: Es wird empfohlen, entweder die nach dem Kelly-Kriterium berechnete Positionsgröße von 59,13% oder die konservative Positionsgröße von 75% zu verwenden.

Strategische Vorteile

  1. Doppelte Trendbestätigung: Validiert Trades sowohl durch RSI-Überverkauft als auch durch gleitenden Durchschnittstrend, wodurch die Gewinnrate verbessert wird.
  2. Flexible Risikokontrolle: Der dynamische ATR-Stop-Loss passt sich der Marktvolatilität an, während der feste Stop-Loss den ultimativen Schutz bietet.
  3. Intelligente Gewinnverwaltung: Dreifache Ziele mit schrittweisen Positionsreduktionen sichern Gewinne bei gleichzeitiger Erhaltung des Aufwärtspotenzials.
  4. Wissenschaftliches Kapitalmanagement: Optimiert die Positionsgröße unter Verwendung des Kelly-Kriteriums und balanciert Risiko und Gewinn.

Strategische Risiken

  1. Trendabhängigkeit: Die Strategie kann häufige Stopps in unterschiedlichen Märkten auslösen. Vorschlag: Fügen Sie Oszillatorfilter hinzu, um falsche Signale zu reduzieren.

  2. Bei einem großen Stop-Loss kann ein festes Stop-Loss von 25% zu großen Verlusten bei einem einzigen Handel führen. Vorschlag: Anpassen des Stop-Loss-Prozentsatzes anhand der persönlichen Risikotoleranz.

  3. Abzugsrisiko: Die abgestufte Gewinnnahme kann bei starken Trends zu früh Positionen reduzieren. Vorschlag: Überlegen Sie dynamische Gewinnziele oder behalten Sie einen Teil für den Trend.

Strategieoptimierungsrichtlinien

  1. Optimierung des Signals:
  • Volumenbestätigung hinzufügen
  • Einbeziehung von Trendindikatoren wie MACD
  • Implementieren von Volatilitätsfiltern
  1. Stop-Loss-Optimierung:
  • Implementieren dynamischer Stop-Loss-Prozentsätze
  • Zeitbasierte Stopps hinzufügen
  • Einbeziehung von Risikovergütungsfiltern
  1. Gewinnoptimierung:
  • Festlegung dynamischer Ziele auf der Grundlage von ATR
  • Implementieren von Trailing Stops
  • Optimierung der Positionsreduktionsquoten

Zusammenfassung

Diese Strategie baut ein komplettes Handelssystem auf, indem sie RSI-Überverkaufssignale mit gleitender Durchschnittstrendfilterung kombiniert, ergänzt durch dynamische ATR-Stop-Loss- und dreifache Gewinnziele. Seine Stärken liegen in der flexiblen Risikokontrolle und dem rationalen Gewinnmanagement, obwohl eine Optimierung auf der Grundlage von Marktbedingungen und persönlicher Risikopräferenz erforderlich ist. Durch die kontinuierliche Verbesserung des Signalsystems, des Stop-Loss-Mechanismus und der Gewinnstrategie zeigt das System Potenzial für eine bessere Leistung im Live-Handel.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08: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