Diese Strategie mit dem Namen
Die Strategie verwendet den ATR-Indikator, um den Stop-Loss-Preis festzulegen. ATR spiegelt die Volatilität des Marktes wider und kann verwendet werden, um die Stop-Loss-Distanz dynamisch festzulegen. Die Strategie berechnet den ATR-Wert basierend auf der Benutzerinput-ATR-Periode und dem Multiplikator und verwendet den ATR-Wert multipliziert mit dem Multiplikator als Stop-Loss-Distanz.
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
Auf diese Weise kann sich die ATR-Linie dynamisch anhand der Kursschwankungen anpassen, um einen Trend nach dem Stop-Loss zu erreichen.
Zusätzlich zum ATR-Trailing-Stop verwendet die Strategie auch den Standardabweichungskanal zur Bestimmung der Eingangssignale.
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
Gehen Sie lang, wenn der Preis die mittlere Linie nach oben bricht, und kurz, wenn der Preis die mittlere Linie nach unten bricht.
Der größte Vorteil dieser Strategie besteht darin, dass sie den ATR-Indikator verwendet, um auf der Grundlage der Marktvolatilität den Stop-Loss dynamisch festzulegen, wodurch der Trend nach dem Stop-Loss und eine wirksame Risikokontrolle ermöglicht werden.
Darüber hinaus vermeidet die Verwendung eines Standard-Abweichungskanals für Eingangssignale häufiges Öffnen von Positionen aufgrund kleiner Kursschwankungen.
Das Hauptrisiko besteht darin, dass, wenn die Stop-Loss-Distanz zu groß ist, das Risiko nicht effektiv kontrolliert werden kann, aber wenn es zu klein ist, kann es leicht durch Marktlärm gestoppt werden.
Ein weiteres Risiko besteht in unangemessenen Standardabweichungskanalparametern, die zu einer zu hohen/niedrigen Eingangsfrequenz führen.
Die Strategie kann in folgenden Aspekten verbessert werden:
Optimieren Sie die ATR-Periode und den Multiplikator, um einen besseren Stop-Loss-Effekt zu erzielen.
Optimierung der Standardabweichungskanalparameter für bessere Eingangssignale.
Hinzufügen anderer Indikatoren zur Filterung, z. B. gleitender Durchschnitt, Kerzenmuster usw., um die Trendrichtung zu beurteilen und die Rentabilität zu verbessern.
Optimierung der Ein- und Ausstiegslogik, z. B. Eröffnung von Positionen erst nach Bestätigung des Kerzenmusters, wenn der Preis die Kanalbänder erreicht.
Die Strategie erreicht einen Trend nach dem Stop-Loss basierend auf dem ATR-Indikator und verwendet einen Standard-Abweichungskanal für Einstiegssignale. Ihre Vorteile liegen in der guten Risikokontrolle für den Trendhandel. Risiken und Verbesserungen werden auch klar analysiert. Die Strategie ist weiteren Tests und Optimierungen wert und hat praktischen Handelswert.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), -1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), 1, nz(pos[1], 0))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)