Trailing Stop Reversal-Strategie


Erstellungsdatum: 2023-12-01 13:41:41 zuletzt geändert: 2023-12-01 13:41:41
Kopie: 0 Klicks: 629
1
konzentrieren Sie sich auf
1619
Anhänger

Trailing Stop Reversal-Strategie

Überblick

Es ist eine sehr einfache Strategie. Es besteht nur aus einem Tracking-Stop. Wenn der Stop ausgelöst wird, wird der Kurs umgedreht und ein Tracking-Stop auf die neue Position gesetzt.

Strategieprinzip

Die Strategie basiert auf einem von drei Stop-Typen: Prozentsatzstop, ATR-Stop und Absolute Stop. Wenn ein Stop-Loss ausgelöst wird, werden die Positionen umgedreht und ein Tracking-Stop für die neuen Positionen gesetzt.

Konkret berechnet die Strategie zunächst den Stop-Loss-Wert nach dem gewählten Stop-Typ. Dann beurteilt sie, ob ein Positionssignal vorliegt, d. h. ob ein Höchstwert größer als der vorherige Stop-Preis ist und ein Tiefwert kleiner als der vorherige Stop-Preis ist.

Analyse der Stärken

Der größte Vorteil dieser Strategie besteht darin, dass sie sehr einfach ist, nur ein Stop-Loss zu verfolgen und keine Eintritts- und Ausstiegsoptionen zu berücksichtigen. Die flexible Einstellung der Stop-Loss-Werte macht sie auch für eine breite Palette von Anwendungen geeignet.

Im Gegensatz zu festen Stop-Losses, kann es Tracking-Stops verwenden, um größere Gewinne zu erzielen, und reduziert die Wahrscheinlichkeit, dass ein Stop-Loss getroffen wird. Nach jedem Stop-Trigger können Positionen umgedreht werden, um eine Preisumkehr zu erfassen.

Risikoanalyse

Die Hauptrisiken, die mit dieser Strategie verbunden sein können, sind die Risiken, die durch eine unsachgemäße Einstellung des Stop-Loss-Preises entstehen. Eine zu hohe Einstellung des Stop-Loss-Wertes kann zu einer Vergrößerung der Verluste führen. Eine zu kleine Einstellung des Stop-Loss-Wertes kann dazu führen, dass der Stop-Loss häufig ausgelöst wird.

Ein weiteres Risiko besteht darin, dass die Richtung der Umkehrposition nach dem Auslösen des Stop-Losses ungenau beurteilt wird, wodurch die Gelegenheit für eine Preisumkehr verpasst wird oder die Verluste erhöht werden. Dies erfordert eine Kombination von Trend- und Unterstützungsresistenzurteilen, um den optimalen Zeitpunkt für eine Umkehr zu bestimmen.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Mehr Trendbeurteilung, um Rückschläge zu vermeiden
  2. Optimierung der Berechnung von Stop-Loss-Werten, um die Märkte dynamischer zu verfolgen
  3. Erhöhung der Durchbruchsschätzungen, um eine höhere Wahrscheinlichkeit für ein Umkehrsignal zu gewährleisten
  4. Bestmögliche Umkehrzeiten in Kombination mit Indikatoren wie Schwankungen

Zusammenfassen

Die Strategie profitiert durch eine einfache Tracking-Stopp-Strategie, eine für Anfänger geeignete Quantifizierungsstrategie. Verglichen mit herkömmlichen Stop-Loss-Strategien, erhöht sie die Mechanismen, die nach dem Stop-Loss-Trigger die Positionen rückgängig machen, um so zusätzliche Gewinne zu erzielen. Durch ständige Tests und Optimierungen kann die Strategie zu einem sehr praktischen Quantifizierungsprogramm werden.

Strategiequellcode
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Trailing SL Strategy [QuantNomad]", shorttitle = "TrailingSL [QN]", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50)

////////////
// Inputs //

sl_type    = input("%", options = ["%", "ATR", "Absolute"])

sl_perc    = input(4,     title = "% SL",        type = input.float)
atr_length = input(10,    title = "ATR Length")
atr_mult   = input(2,     title = "ATR Mult",    type = input.float)
sl_absol   = input(10,    title = "Absolute SL", type = input.float)

// BACKTESTING RANGE
// From Date Inputs
fromDay   = input(defval = 1,    title = "From Day",   minval = 1, maxval = 31)
fromMonth = input(defval = 1,    title = "From Month", minval = 1, maxval = 12)
fromYear  = input(defval = 2016, title = "From Year",  minval = 1970)
 
// To Date Inputs
toDay   = input(defval = 1,    title = "To Day",   minval = 1, maxval = 31)
toMonth = input(defval = 1,    title = "To Month", minval = 1, maxval = 12)
toYear  = input(defval = 2100, title = "To Year",  minval = 1970)
 
// Calculate start/end date and time condition
startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear,   toMonth,   toDay,   00, 00)

time_cond = time >= startDate and time <= finishDate

//////////////////
// CALCULATIONS //

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
pos         = 0
trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

//////////////
// PLOTINGS //

plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)

//////////////
// STRATEGY //

if (time_cond and pos != 1)
    strategy.entry("long",  true, stop = trailing_sl)
  
if (time_cond and pos != -1) 
    strategy.entry("short", false, stop = trailing_sl)