Trend nach Strategie mit dynamischen Stopps

Schriftsteller:ChaoZhang, Datum: 2023-11-01 13:46:28
Tags:

img

Übersicht

Diese Strategie erzeugt Handelssignale, wenn der Preis die EMA überschreitet, und verwendet ATR als dynamischen Stop-Loss, um Risiken zu managen.

Wie es funktioniert

Die Schlüssellogik lautet:

  1. Berechnen Sie ATR als Stoppverlustlinie, der ATR-Wert bestimmt die Stoppdistanz nLoss

  2. Preisquelle ist standardmäßig Schließpreis, verwenden Sie Heikin Ashi close, wenn die Option h aktiviert ist

  3. xATRTrailingStop verfolgt eine dynamische Stop-Loss-Linie basierend auf dem Preisvergleich mit dem vorherigen Stop

  4. Positionspos ist 1 für lang, wenn der Preis über die Stop-Loss-Linie geht, -1 für kurz, wenn er unterhalb geht, sonst 0

  5. EMA-Crossover-Signale, über EMA ist Kaufsignal, darunter ist Verkaufssignal

  6. Eintritt in Geschäfte auf Kauf-/Verkaufssignale, Ausstieg auf entgegengesetzte Signale

  7. Farbliche Balken basierend auf Position, Markierungssignale und Stop-Loss-Linien

Diese Strategie verfolgt Trends mit dynamischen Stopps auf Basis von ATR. Sie kann Trends erkennen und Risiken effektiv managen.

Vorteile

Die Vorteile sind:

  1. Der ATR-basierte dynamische Stopp passt sich an die Marktvolatilität an

  2. EMA-Filter verringern falsche Signale aus Lärm

  3. Optional Heikin Ashi Filter für Geräusche und Trenden

  4. Clear long/short position avoids whipsaws from trailing stop: Übersetzungsresultate für die Übersetzung:

  5. Visuelle Hilfsmittel wie Linien, Etiketten und Färbung

  6. Einfache und leicht verständliche Logik zur Änderung

  7. Anpassbare ATR-Periode und Multiplikator für verschiedene Märkte

Zusammenfassend kann diese Strategie durch die Kombination von Trendfolgen und dynamischen Stops Trends erfassen und Risiken gut für den Swing-Handel managen.

Risiken

Es gibt einige Risiken, die zu berücksichtigen sind:

  1. EMA-Signale können kurzfristige Bewegungen verfehlen

  2. Häufige Stopp-Loss-Trigger in unruhigen Märkten

  3. Keine Berücksichtigung von Kosten wie Provisionen

  4. Fehlende Positionsgrößenkontrolle

  5. Die Leistung hängt vom Parameter-Tuning ab

  6. Risiken von Schlagsaugen auf unterschiedlichen Märkten

  7. Erfordert Überwachung und Eingreifen

Die Risiken können durch Optimierung der Parameter, Hinzufügen von Filtern, richtige Größenordnung der Positionen, Überwachung der Leistung und Intervention bei Bedarf reduziert werden.

Optimierung

Einige Möglichkeiten zur Verbesserung der Strategie:

  1. Anpassung der ATR-Parameter für verschiedene Märkte

  2. Test andere gleitende Durchschnitte, um Signale zu filtern

  3. Hinzufügen von Trendfilterindikatoren für eine höhere Wahrscheinlichkeit

  4. Einführung von Positionsgrößengrenzen

  5. Hinzufügen von Einstiegsbedingungen wie Volumen, Abstand von MA

  6. Kosten wie Provisionen in Stopps einbeziehen

  7. Optimieren Sie die Ein- und Ausstiegszeit mit mehr Signalen

  8. Einführung von Profit Taking oder Trailing Stops

  9. Automatisierte Optimierung von Parametern

Durch die Kombination mehrer Techniken für Eingänge, Ausgänge, Filter und Parameter-Tuning kann die Strategie weiter gestärkt werden.

Schlussfolgerung

Diese Strategie kombiniert dynamische Stopps und Trendfollowing. Mit effektiven Stopps, reibungslosem Trendverfolgung, Benutzerfreundlichkeit und Anpassbarkeit eignet sie sich für Swing-Trading-Trends. Es ist jedoch ein angemessenes Risikomanagement, Monitoring und Parameter-Tuning erforderlich.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy)
strategy.entry("short", false, when = sell)

Mehr