ES Trailing-Stop-Strategie basierend auf ATR


Erstellungsdatum: 2024-01-12 14:52:23 zuletzt geändert: 2024-01-12 14:52:23
Kopie: 3 Klicks: 673
1
konzentrieren Sie sich auf
1617
Anhänger

ES Trailing-Stop-Strategie basierend auf ATR

Überblick

Diese Strategie ist eine Tracking-Stopp-Strategie, die für die E-mini S&P500-Futures ((ES)) angewendet wird. Sie verwendet die 10-Tage-ATR als Referenz, um eine Stop-Line für Mehrköpfe und Leerköpfe mit 3x der ATR als Stop-Range einzurichten. Die Strategie beurteilt den Trend durch die Änderung der Richtung der ATR-Linie und erzeugt ein Einstiegssignal an einem Trendwendepunkt.

Strategieprinzip

Diese Strategie verwendet hl2 als Preisquelle. Zuerst wird die 10-Tage-ATR berechnet und der Benutzer kann wählen, ob er die ATR mit der SMA-Methode oder der integrierten ATR-Funktion berechnet. Nachdem die ATR berechnet wurde, wird die 3-fache ATR als Spanne hinzugefügt.

Die Methode, um einen Trend zu bestimmen, ist, wenn der Preis die obere Grenze überschreitet, dann ist er oberwärts; wenn der Preis die untere Grenze überschreitet, dann ist er oberwärts. Wenn der Preis wieder in die Grenze zurückkehrt, wird der Trendwechsel bestätigt.

Nach dem Einstieg ist die Mehrkopf-Stopp-Linie auf die obere Grenze 1 Punkt nach unten und die Leerkopf-Stopp-Linie auf die untere Grenze 1 Punkt nach oben eingestellt, um einen scharfen Nachschubschutz zu gewährleisten.

Strategische Vorteile

  1. Die Verwendung von ATR ermöglicht die automatische Anpassung an Veränderungen der Marktvolatilität und reduziert die Wahrscheinlichkeit, dass ein Stop-Loss ausgelöst wird.
  2. Die Methode, Trends zu verfolgen, ist einfach und effektiv und vermeidet die Gefahr von Top- und Bottom-Trends
  3. Ein Stop-Loss schützt den Gewinn und verhindert erneute Verluste nach Gewinn.

Risikoanalyse

  1. Die falsche Einstellung der ATR-Parameter kann zu einem zu großen oder zu kleinen Stop-Loss-Bereich führen
  2. Bei schwankenden Schwankungen des Wertes kann ein außergewöhnlicher Stopp auftreten.
  3. TAILING Stopps sind möglicherweise zu konservativ, um Trends zu verfolgen

Optimierungsrichtung

  1. Eine Optimierung des ATR-Parameters in Verbindung mit einem Volatilitätsindikator kann in Betracht gezogen werden
  2. Verschiedene TAILING-Stopp-Algorithmen, wie z. B. Restprozentsatz-Stopp, können getestet werden
  3. Eintrittssignale können durch Trendindikatoren gefiltert werden, um nicht-mainstream-Eintritte zu vermeiden.

Zusammenfassen

Diese Strategie ist insgesamt eine allgemeinere Trend-Tracking-Strategie. Sie löst die Schwierigkeiten bei der Bestimmung des Stop-Loss-Bereichs und reduziert das Risiko durch die dynamische Anpassung der ATR. Gleichzeitig wird der Stop-Loss durch Gewinnschutz verfolgt.

Strategiequellcode
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Based Trailing Stop Strategy on ES! [v4]", overlay=true)

// Given ATR study
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Entry logic based on trend change
longCondition = trend == 1 and trend[1] == -1
shortCondition = trend == -1 and trend[1] == 1

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trailing stop loss logic
// For long positions, trail 1 point below the up plot
longStopPrice = up - 1

// For short positions, trail 1 point above the dn plot
shortStopPrice = dn + 1

strategy.exit("Trailing Stop Long", "Long", trail_offset=longStopPrice)
strategy.exit("Trailing Stop Short", "Short", trail_offset=shortStopPrice)