Trendfolgende Stop-Loss-Strategie basierend auf Preisvolatilität


Erstellungsdatum: 2023-12-01 17:53:36 zuletzt geändert: 2023-12-01 17:53:36
Kopie: 6 Klicks: 666
1
konzentrieren Sie sich auf
1619
Anhänger

Trendfolgende Stop-Loss-Strategie basierend auf Preisvolatilität

Überblick

Die Strategie ist eine Trend-Tracking-Stopp-Strategie, die auf der Preisvolatilität basiert. Sie verwendet die durchschnittliche reale Schwankungsbreite (ATR) um eine Stop-Line für die Preisschwankungen zu setzen. Die ATR spiegelt die Volatilität und das Risiko der Preise wider.

Strategieprinzip

Die Strategie berechnet zunächst die durchschnittliche reale Bandbreite der ATR innerhalb eines bestimmten Zeitraums. Dann wird die Stop-Line auf die aktuelle Höchstpreis minus n-fache ATR festgelegt, wenn es sich um einen Aufwärtstrend handelt. Wenn es sich um einen Abwärtstrend handelt, wird die Stop-Line auf die aktuelle niedrigste Preis plus n-fache ATR gesetzt.

Wenn der Preis die Stop-Line des Aufwärtstrends überschreitet oder die Stop-Line des Abwärtstrends durchbricht, wird festgestellt, dass ein Trendwechsel stattfindet. Die Strategie löscht die Stop-Losses und setzt eine neue Stop-Loss-Line entsprechend der neuen Trendrichtung.

Insgesamt hat die Strategie die Fähigkeit, Trendwechsel präzise zu beurteilen, indem sie die Preisschwankungen nutzt, um eine Stop-Loss-Linie einzurichten. Wenn sich der Trend ändert, kann die Strategie die neue Trendrichtung erfassen.

Strategische Vorteile

  • Benutzen Sie die Merkmale der Preisschwankungen, um Trends zu erkennen und die Preiswendepunkte genau zu erfassen
  • Zeitliche Stop-Losses und Wechsel von Positionen, um das Risiko einer Kursumkehr zu verringern
  • Die Parameter sind flexibel und können den Abstand zwischen der Stop-Line und den Preisschwankungen steuern
  • Anpassungsfähigkeit an die spezifischen Parameter der Sorte, hohe Anpassungsfähigkeit

Strategisches Risiko

  • Die Gefahr von Fehlentscheidungen durch ungültige Durchbrüche. Die Preise können nicht dauerhafte Fehlentscheidungen verursachen, was zu einer Fehlentscheidung führt
  • Eine zu radikale Einstellung der Parameter kann den Verlust erhöhen. Zum Beispiel kann ein zu großer n-Wert zu nahe an der Stop-Line sein, wodurch kleine Erschütterungen ausgelöst werden.
  • Die Stop-Line kann bei niedrigen Volatilitätsvarianten wie z.B. urrencies nicht so gut wirken.

Strategieoptimierung

  • Hilfsindikatoren wie Handelsvolumen oder Schwankungsbeschleunigung können eingeführt werden, um Fehleinschätzungen zu vermeiden, die einen ungültigen Durchbruch verhindern
  • Anpassung der n-Werte an die Eigenschaften der verschiedenen Sorten, um die Stop-Loss-Distanz besser zu passen
  • ATR-Perioden können auch optimiert werden, um die am besten geeigneten Periodenparameter zu wählen, um die Preisdifferenz zu beurteilen

Zusammenfassen

Die Strategie ist insgesamt eine bessere Algorithmierung, die eine Stop-Line auf Basis von Preisschwankungen setzt. Sie beurteilt die Preisentwicklung mit hoher Genauigkeit und kann die wichtigen Trendwendepunkte erfassen. Sie bietet auch einen gewissen Spielraum für Anpassungen und ist anpassungsfähig. Als Stop-Loss-Strategie kann sie das Risiko einer Trendwende effektiv umgehen und ist es wert, in der Realität angewendet zu werden.

Strategiequellcode
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
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/
// © laptevmaxim92

//@version=4
strategy("Volatility stop strategy", overlay=true)

length = input(20)
mult = input(2, step = 0.1)
utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2039, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

atr_ = atr(length)
max_ = 0.0
min_ = 0.0
max1 = 0.0
max1 := max(nz(max_[1]), close)
min1 = 0.0
min1 := min(nz(min_[1]), close)
vstop = 0.0
is_uptrend = false
is_uptrend_prev = false
is_uptrend_prev := nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? color.green : color.red, linewidth=2)

longCondition = is_uptrend
if (longCondition and use_date)
    strategy.entry("BUY", strategy.long)

shortCondition = not is_uptrend
if (shortCondition and use_date)
    strategy.entry("SELL", strategy.short)
    
if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)