Doppel-ATR-Strailing Stop-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-31 17:10:32
Tags:

img

Übersicht

Die Dual ATR Trailing Stop Strategie ist eine kurzfristige Handelsstrategie, die auf dem Indikator Average True Range (ATR) basiert.

Strategieprinzip

Der Kern dieser Strategie besteht darin, zwei ATR-Stop-Loss-Linien zu verwenden. Eine ist die schnelle ATR-Linie mit kurzer Periode und einem kleinen Multiplikator für eine schnelle Reaktion. Die andere ist die langsame ATR-Linie mit einer längeren Periode und einem größeren Multiplikator für die Filtration. Wenn die schnelle ATR-Linie über die langsame ATR-Linie kreuzt, erzeugt sie ein Kaufsignal. Wenn die schnelle ATR-Linie unter die langsame ATR-Linie kreuzt, erzeugt sie ein Verkaufssignal.

Die spezifische Logik ist: Berechnen Sie eine schnelle ATR-Linie und eine langsame ATR-Linie. Wenn der Preis über der langsamen Linie liegt, verwenden Sie eine schnelle Linie, um den Stop-Loss zu verfolgen. Ansonsten verwenden Sie eine langsame Linie, um den Stop-Loss zu verfolgen. Die Farbe von Kline repräsentiert die aktuelle Stop-Loss-Linie. Grün und Blau bedeutet, dass Sie eine schnelle Linie verwenden. Rot und Gelb bedeutet, dass Sie eine langsame Linie verwenden. Verlassen Sie, wenn der Marktpreis die Stop-Loss-Linien berührt.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Einfache und klare Logik, leicht zu verstehen und umzusetzen.
  2. Schnelle Reaktion auf Marktveränderungen, geeignet für Markt mit hoher Volatilität.
  3. Die Doppel-ATR-Stopp-Verlustkontrollen sind wirksam.
  4. Der ATR-Indikator ist parametrisch für die Einstellung des Stop-Loss-Bereichs.
  5. Die visuelle Farbe der Kline zeigt die Stop-Loss-Situation deutlich an.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Neigend zum Überhändeln.
  2. ATR hat eine schlechte Kurvenanpassung, kann Verluste verstärken.
  3. Kann nicht effektiv seitwärts und Trendmärkte filtern.

Wir können die Risiken reduzieren, indem wir die ATR-Periode optimieren, den ATR-Multiplikator anpassen, andere Indikatoren für die Filtration kombinieren usw.

Optimierungsrichtung

Die Optimierungsrichtungen sind:

  1. Optimieren Sie die ATR-Parameter für einen besseren Stoppverlustbereich.
  2. Hinzufügen von Filterindikatoren, um ungültige Trades wie MA zu vermeiden.
  3. Fügen Sie offene Bedingungen hinzu, um Missverständnisse zu vermeiden.
  4. Um zu vermeiden, dass der Handel überhöhter wird, werden Ausgänge für die Haltedauer hinzugefügt.

Schlussfolgerung

Die Dual ATR Trailing Stop Strategie ist leicht zu verstehen und umzusetzen, besonders für hochvolatile Szenarien geeignet und kann Risiken effektiv kontrollieren.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ceyhun

//@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 perod", input.integer)  // ATR Period
AF2 = input(2, "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)
Bear = barssince(Red) < barssince(Green)

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)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=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.entry("Sell", strategy.short, comment="Sell")



Mehr