Die Ressourcen sind geladen. Beförderung...

Erweiterte Trendfolgestrategie mit adaptiver Trailing-Stop

Schriftsteller:ChaoZhang, Datum: 2024-12-20 14:12:05
Tags:ATRSLTS

img

Übersicht

Es handelt sich um eine Trend-Folge-Strategie, die auf dem Supertrend-Indikator basiert und mit einem adaptiven Trailing-Stop-Loss-Mechanismus kombiniert wird. Die Strategie verwendet hauptsächlich den Supertrend-Indikator, um die Markttrendrichtung zu identifizieren, und verwendet dynamisch angepasste Trailing-Stops, um das Risiko zu verwalten und den Ausgangstermin zu optimieren. Es unterstützt mehrere Stop-Loss-Methoden, einschließlich prozentual basierender, ATR-basierender und festpunktlicher Stops, so dass eine flexible Anpassung an unterschiedliche Marktbedingungen möglich ist.

Strategieprinzipien

Die Kernlogik der Strategie beruht auf folgenden Schlüsselelementen:

  1. Verwendet den Supertrend-Indikator als primäre Basis für die Trendbestimmung, der ATR (Average True Range) zur Messung der Marktvolatilität kombiniert
  2. Eintrittssignale werden durch Richtungsänderungen des Supertrends ausgelöst, die den Long-, Short- oder bilateralen Handel unterstützen
  3. Der Stop-Loss-Mechanismus verwendet adaptive Trailing-Stops, die sich automatisch anhand der Marktvolatilität anpassen.
  4. Das Handelsmanagementsystem umfasst Positionsgrößen (Standstillstand 15% des Kontokapitals) und Zeitfiltermechanismen

Strategische Vorteile

  1. Starke Trend-Erfassungsfähigkeit: Wirksam identifiziert wichtige Trends durch den Supertrend-Indikator und reduziert falsche Signale
  2. Umfassende Risikokontrolle: Verschiedene Stopp-Loss-Mechanismen für verschiedene Marktumgebungen
  3. Hohe Flexibilität: Unterstützt die Konfiguration mehrerer Handelsrichtungen und Stop-Loss-Methoden
  4. Starke Anpassungsfähigkeit: Die Trailing Stops werden automatisch an die Marktvolatilität angepasst, wodurch die Anpassungsfähigkeit der Strategie verbessert wird.
  5. Komplettes Backtesting-System: Eingebettete Zeitfilterfunktion für die Analyse historischer Leistungen

Strategische Risiken

  1. Trendumkehrrisiko: In stark volatilen Märkten können falsche Signale auftreten
  2. Slipper-Risiko: Die Ausführung des Trailing Stop kann von der Liquidität des Marktes beeinflusst werden.
  3. Parameterempfindlichkeit: Die Einstellungen für den Supertrend-Faktor und den ATR-Perioden beeinflussen die Strategieleistung erheblich
  4. Abhängigkeit vom Marktumfeld: Häufiger Handel auf verschiedenen Märkten kann die Kosten erhöhen

Strategieoptimierungsrichtlinien

  1. Optimierung der Signalfilterung: Zusätzliche technische Indikatoren können hinzugefügt werden, um falsche Signale zu filtern
  2. Optimierung des Positionsmanagements: Die Positionsgröße kann dynamisch anhand der Marktvolatilität angepasst werden
  3. Verbesserung des Stop-Loss-Mechanismus: Eine komplexere Stop-Loss-Logik kann entworfen werden, die den durchschnittlichen Kostenpreis beinhaltet
  4. Optimierung der Eintrittszeit: Preisstrukturanalyse kann hinzugefügt werden, um die Genauigkeit der Eintrittszeit zu verbessern
  5. Verbesserung des Backtesting-Systems: Mehr statistische Indikatoren können hinzugefügt werden, um die Strategieleistung zu bewerten

Zusammenfassung

Dies ist ein gut konzipierter Trend, der einer Strategie mit kontrollierbarem Risiko folgt. Durch die Kombination des Supertrend-Indikators mit flexiblen Stop-Loss-Mechanismen kann die Strategie eine hohe Rentabilität beibehalten und gleichzeitig das Risiko effektiv kontrollieren. Die Strategie ist sehr konfigurierbar und geeignet für den Einsatz in verschiedenen Marktumgebungen, erfordert jedoch eine gründliche Optimierung der Parameter und eine Rückprüfung. Zukünftige Verbesserungen können durch Hinzufügen von mehr technischen Analysewerkzeugen und Risikokontrollmaßnahmen zur weiteren Steigerung der Stabilität und Rentabilität der Strategie vorgenommen werden.


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

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float 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 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")


Verwandt

Mehr