RSI überverkaufte elastische quantitative Strategie mit dynamischem ATR-Stop-Loss

RSI SMA ATR TP SL
Erstellungsdatum: 2024-11-29 16:18:55 zuletzt geändert: 2024-11-29 16:18:55
Kopie: 0 Klicks: 453
1
konzentrieren Sie sich auf
1617
Anhänger

RSI überverkaufte elastische quantitative Strategie mit dynamischem ATR-Stop-Loss

Überblick

Die Strategie ist ein quantitatives Handelssystem, das auf RSI-Überverkaufssignalen und dynamischen ATR-Stopps basiert. Die Strategie nutzt die Tageslinie, kombiniert mit dem RSI-Überverkaufssignal und der 200-Tages-Durchschnittslinie, um eine Trendfilterung zu verwenden, um eine Bounce-Chance zu ergreifen, wenn der Markt überkauft ist. Die Strategie verwendet einen doppelten Schutzmechanismus für dynamische ATR-Stopps und statische Prozentsätze, und setzt ein dreifaches Gewinnziel, um die Gewinne durch schrittweise Positionsreduktion zu maximieren.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:

  1. Eintrittssignal: Wenn der RSI ((5)) unter 30 liegt und der Preis über dem 200-Tagesdurchschnitt liegt, gibt das System ein Mehrwertsignal.
  2. Stop-Loss-Mechanismus: Doppelmechanismus, der einen dynamischen Stop-Loss von 1,5 mal ATR () 20 und einen festen Stop-Loss von 25% kombiniert.
  3. Gewinnziel: Es wurden drei Zielpositionen von 5%, 10% und 15% festgelegt, wobei die Positionen bei Erreichen des Ziels um 33%, 66% und 100% reduziert wurden.
  4. Positionsverwaltung: Es wird empfohlen, die Positionen mit 59,13% der Positionen zu verwenden, die nach der Kelly-Richtlinie berechnet wurden, oder die Positionen mit 75% zu behalten.

Strategische Vorteile

  1. Doppelte Trendbestätigung: Erhöhung der Gewinnrate durch die Doppelüberprüfung von RSI-Überverkauf und Durchschnittstrend.
  2. Flexible Risikokontrolle: Dynamische ATR-Stopps bieten die Möglichkeit, sich an Marktbewegungen anzupassen, und feste Stopps bieten die letzte Verteidigungslinie.
  3. Intelligentes Gewinnmanagement: Dreifache Zielsetzung mit Phasenreduktion, um einen Teil des Gewinns zu sichern, ohne den großen Markt zu verpassen.
  4. Die Wissenschaft des Geldmanagements: Positionsoptimierung nach dem Kelly-Prinzip, um ein Gleichgewicht zwischen Risiko und Ertrag herzustellen.

Strategisches Risiko

  1. Trendabhängigkeit: Die Strategie kann in einem wackligen Markt häufig zu Stop-Losses führen. Empfehlung: Zunahme des Schwingungsindikators, um falsche Signale zu filtern.

  2. Ein starker Stop-Loss: Ein fester Stop-Loss von 25% kann zu einem übermäßigen Einmalverlust führen. Es wird empfohlen, die Stop-Loss-Rate an die persönliche Risikoverfügbarkeit anzupassen.

  3. Rücktrittsrisiken: Frühzeitige Verringerung der Gewinne bei einem starken Kurs. Empfehlung: Sie können Ihre Gewinnziele dynamisch anpassen, oder Sie können einige Positionen behalten, um Trends zu verfolgen.

Richtung der Strategieoptimierung

  1. Signaloptimierung:
  • Hinzufügen der Transaktionsbestätigung
  • Kombination mit Trendindikatoren wie MACD
  • Einführung von Volatilitätsfiltern
  1. Stop Loss Optimierung:
  • Dynamische Stop-Loss-Verhältnisse
  • Erhöhung des Zeitverlustes
  • Hinzufügen von Gewinn-Verlust-Filter
  1. Profitabilitätsoptimierung
  • ATR-basierte dynamische Zielsetzung
  • Tracking-Stopp ermöglicht
  • Optimierung der Abschlagquote

Zusammenfassen

Die Strategie baut ein vollständiges Handelssystem auf, indem sie RSI-Überverkaufssignale und Gleichgewichts-Trendfilter kombiniert und mit dynamischen ATR-Stopp- und Triple-Profit-Zielen kombiniert wird. Der Vorteil der Strategie besteht darin, dass die Risikokontrolle flexibel und die Gewinnverwaltung vernünftig ist, aber immer noch optimierte Anpassungen an die tatsächlichen Marktsituationen und die persönlichen Risikopräferenzen erforderlich sind. Durch die kontinuierliche Verbesserung des Signalsystems, der Stop-Loss-Mechanismen und der Gewinnstrategie wird das System eine bessere Leistung in der realen Handelsdisko erwarten.

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