Diese Strategie erzeugt Handelssignale, wenn der Preis die EMA überschreitet, und verwendet ATR als dynamischen Stop-Loss, um Risiken zu managen.
Die Schlüssellogik lautet:
Berechnen Sie ATR als Stoppverlustlinie, der ATR-Wert bestimmt die Stoppdistanz nLoss
Preisquelle ist standardmäßig Schließpreis, verwenden Sie Heikin Ashi close, wenn die Option h aktiviert ist
xATRTrailingStop verfolgt eine dynamische Stop-Loss-Linie basierend auf dem Preisvergleich mit dem vorherigen Stop
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
EMA-Crossover-Signale, über EMA ist Kaufsignal, darunter ist Verkaufssignal
Eintritt in Geschäfte auf Kauf-/Verkaufssignale, Ausstieg auf entgegengesetzte Signale
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.
Die Vorteile sind:
Der ATR-basierte dynamische Stopp passt sich an die Marktvolatilität an
EMA-Filter verringern falsche Signale aus Lärm
Optional Heikin Ashi Filter für Geräusche und Trenden
Clear long/short position avoids whipsaws from trailing stop: Übersetzungsresultate für die Übersetzung:
Visuelle Hilfsmittel wie Linien, Etiketten und Färbung
Einfache und leicht verständliche Logik zur Änderung
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.
Es gibt einige Risiken, die zu berücksichtigen sind:
EMA-Signale können kurzfristige Bewegungen verfehlen
Häufige Stopp-Loss-Trigger in unruhigen Märkten
Keine Berücksichtigung von Kosten wie Provisionen
Fehlende Positionsgrößenkontrolle
Die Leistung hängt vom Parameter-Tuning ab
Risiken von Schlagsaugen auf unterschiedlichen Märkten
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.
Einige Möglichkeiten zur Verbesserung der Strategie:
Anpassung der ATR-Parameter für verschiedene Märkte
Test andere gleitende Durchschnitte, um Signale zu filtern
Hinzufügen von Trendfilterindikatoren für eine höhere Wahrscheinlichkeit
Einführung von Positionsgrößengrenzen
Hinzufügen von Einstiegsbedingungen wie Volumen, Abstand von MA
Kosten wie Provisionen in Stopps einbeziehen
Optimieren Sie die Ein- und Ausstiegszeit mit mehr Signalen
Einführung von Profit Taking oder Trailing Stops
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.
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)