Dynamische Stop-Loss-Strategie, die sich an ATR-Schwankungen anpasst

Schriftsteller:ChaoZhang, Datum: 2023-10-09 15:30:29
Tags:

Übersicht

Diese Strategie kombiniert den Momentumindikator Stochastic K-Wert und den Volatilitätsindikator ATR, um die Stop-Loss-Linie und die Entry-Line dynamisch anhand der ATR-Werte anzupassen und die Idee der automatischen Anpassung von Stop-Loss- und Entry-Linien an die Marktvolatilität zu verwirklichen.

Strategie Logik

  1. Berechnen Sie den K-Wert sma ((stock ((close, high, low, len), smoothK) mit der Länge len, die den stochastischen K-Wert darstellt.

  2. Berechnen Sie den ATR-Wert atr ((len) mit der Länge len.

  3. Graph Stop-Loss-Line-Graph ((rsi(atr, len) +lowLine,..., Titel = low line) und Entry-Line-Graph ((rsi(atr, len) *-1+100-lowLine,..., Titel = up line) basierend auf dem ATR-Wert.

  4. Bestimmung der Ein- und Ausstiegssignale, wenn der Wert K über die Einstiegslinie (k, Up Line) und die Stop-Loss-Linie (k, Low Line) kreuzt.

  5. Graphische Hintergrundfarben für Kauf- und Verkaufssignale.

  6. Ausführen von Trades und Stop Loss setzen, wenn die oben genannten Signale ausgelöst werden.

Analyse der Vorteile

  1. Die Strategie passt Stop-Loss- und Entry-Linien dynamisch an, basierend auf der Marktvolatilität ATR, die das Stop-Loss-Risiko automatisch an die Marktvolatilität anpasst.

  2. Wenn die Marktvolatilität hoch ist, vergrößert sich der Abstand zwischen Stop-Loss- und Entry-Lines, um nicht durch Schwankungen gestoppt zu werden.

  3. Wenn die Marktvolatilität gering ist, verengt sich der Abstand zwischen Stop-Loss und Entry-Lines, um rechtzeitig einen Stop-Loss zu erzielen.

  4. Mit Hilfe des Impulsindikators K-Werte werden Ein- und Ausgänge ermittelt.

  5. Durch die Kombination von Dynamik- und Volatilitätsindikatoren können Trends erfasst und Risiken automatisch anhand von Schwankungen angepasst werden.

Risikoanalyse

  1. K-Werte können falsche Ausbrüche haben, was unnötige Handelssignale verursacht.

  2. Wenn der ATR-Parameter len zu groß ist, wird der Abstand zwischen Stop-Loss und Entry-Lines zu groß mit hohem Risiko.

  3. Ein reiner Trailing Stop Loss kann nicht bestimmen, ob die Stop Loss Position angemessen ist und kann das Risiko eines einzigen Stop Loss nicht kontrollieren.

  4. Häufige Strategiesignale führen zu hohen Handelskosten. Kann den Eingangsparameter lowLine anpassen, um die Handelsfrequenz zu steuern.

Optimierungsrichtlinien

  1. Testen und Anpassen des Parameters smoothK, um optimale Kombinationen von Parametern mit einem glatten K-Wert zu finden.

  2. Versuche verschiedene Werte des ATR-Parameters len, um geeignete ATR-Parameter zu ermitteln.

  3. Optimieren Sie den Eingangsparameter lowLine, um optimale Parameter zur Steuerung der Handelsfrequenz zu finden.

  4. Es sollte in Betracht gezogen werden, andere Indikatoren zu kombinieren, um Eingangssignale zu filtern und falsche Ausbrüche zu vermeiden, wie z. B. Handelsvolumenindikatoren, KDJ-Indikatoren usw.

  5. Überlegen Sie, wie Sie die Stop-Loss-Methoden optimieren und die erwarteten Stop-Loss-Methoden verbessern können, um das Stop-Loss-Risiko aktiv zu kontrollieren.

Zusammenfassung

Die Strategie realisiert die Idee der dynamischen Anpassung von Stop-Loss- und Entry-Linien basierend auf Momentum-Indikator-K-Werten und Volatilitäts-Indikator-ATR. Sie kann Trends erfassen und Risiken automatisch basierend auf Schwankungen anpassen, was sehr innovativ und praktisch ist. Weitere Optimierungen wie Parameter-Tuning, Verbesserung von Stop-Loss-Methoden können die Strategie stabiler und zuverlässiger machen, mit großen Entwicklungsperspektiven.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

len = input(34, minval=1, title="Length for Main Stochastic & ATR") 
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")

//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")

//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")

aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0

//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)

bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")

bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")

bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")

//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1

strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)





Mehr