
Diese Strategie basiert auf dem ATR-Indikator und ist ein dynamischer Tracking-Stop-Mechanismus, der die Stop-Position in Echtzeit anpasst, um einen größeren Gewinn zu erzielen.
Die Strategie verwendet die schnelle ATR-Zyklus 5 und die langsame ATR-Zyklus 10, um eine doppelte Schicht von dynamischen Tracking-Stopps zu bauen. Wenn der Preis in eine günstige Richtung fährt, startet die schnelle Schicht die Tracking-Stopps zum ersten Mal und schließt die Stop-Loss-Position; Wenn der Preis kurzfristig rückgängig wird, kann die Stop-Loss-Position der langsamen Schicht eine vorzeitige Stop-Loss vermeiden.
Insbesondere die Stop-Distanz der schnellen Ebene ist 0,5 mal 5 Perioden ATR, die Stop-Distanz der langsamen Ebene ist 3 mal 10 Perioden ATR. Es erzeugt ein Kaufsignal, wenn die schnelle Ebene nach oben durchbricht die langsame Ebene; es erzeugt ein Verkaufsignal, wenn die schnelle Ebene nach unten durchbricht die langsame Ebene. Die Stop-Line wird auch in Echtzeit aktualisiert und unter der Kurskurve gezeichnet.
Der größte Vorteil dieser Strategie besteht darin, dass die Stop-Position dynamisch angepasst werden kann, um maximale Gewinne zu erzielen, wenn die Stop-Loss-Position garantiert ist. Im Vergleich zu festen Stop-Loss-Distanzen kann die dynamische ATR-Stop-Line an die Marktfluktuation angepasst werden, um die Wahrscheinlichkeit zu verringern, dass die Stop-Loss aktiviert wird.
Darüber hinaus kann die doppelte ATR-Konstruktion die Sensitivität der Verlustdämpfung ausgleichen. Die schnelle Schicht reagiert schnell, während die langsame Schicht kurzzeitige Geräusche filtert und vorzeitige Verlustdämpfung verhindert.
Das Hauptrisiko dieser Strategie besteht darin, ob die Einstellung des Stop-Loss-Abstands angemessen ist. Wenn der ATR-Multiplikator zu groß eingestellt ist, kann der Stop-Loss-Wert nicht mit dem Preis laufen. Wenn der ATR-Multiplikator zu klein ist, kann er leicht von kurzfristigen Geräuschen gestoppt werden.
Darüber hinaus ist die ATR bei der Bereinigung kleiner, näher an der Stop-Line und häufiger zu stoppen. Die Strategie ist daher besser für Sorten mit einer gewissen Volatilität geeignet.
Verschiedene Kombinationen von ATR-Zyklusparametern können ausprobiert werden, um die optimale Balance zu finden. Darüber hinaus kann der Einsatz in Kombination mit anderen Indikatoren, wie z. B. Trendindikatoren, zur Beurteilung der Marktphase, in Betracht gezogen werden, um die Größe des ATR-Multiplikators dynamisch anzupassen.
Es kann auch untersucht werden, ob es möglich ist, die ATR-Werte zu ersetzen. Eine Änderung der ATR-Werte in Werte wie DKVOL, HRANGE oder ATR-Prozentsatz kann möglicherweise zu einem besseren Stop-Loss-Effekt führen.
Die Strategie basiert auf dem ATR-Indikator und ist mit einer doppelten Dynamik-Tracking-Mechanik ausgestattet, die sowohl größere Gewinne erzielt als auch übermäßige Stop-Loss vermeidet. Sie ist für Benutzer mit hohen Stop-Loss-Anforderungen geeignet. Die Strategie kann die Parameter flexibel an die Markt- und Sortenmerkmale anpassen, um optimale Stop-Loss-Effekte zu erzielen.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)
/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and //
// different interpretation. //
// This is a fast-reacting system and is better //
// suited for higher volatility markets //
//////////////////////////////////////////////////////
SC = input(close, "Source", input.source)
// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer) // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor
SL1 = AF1 * atr(AP1) // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))
// Slow Trail //
AP2 = input(10, "Slow ATR period", input.integer) // ATR Period
AF2 = input(3, "Slow ATR multiplier", input.float) // ATR Factor
SL2 = AF2 * atr(AP2) // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))
// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2
// Signals //
Bull = barssince(Green) < barssince(Red)
Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)
TS1 = plot(Trail1, "Fast Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2, display=display.none)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.new(color.green, 90) : color.new(color.red, 90))
plotcolor = input(true, "Paint color on chart", input.bool)
bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)
if Buy
strategy.entry("Buy", strategy.long, comment="Buy")
if Sell
strategy.close("Buy")