Strategie zur Verhinderung von Verlusten durch Verlauf

Schriftsteller:ChaoZhang, Datum: 2023-10-25 14:56:28
Tags:

img

Übersicht

Die Gradient Trailing Stop Loss Strategie passt die Stop-Loss-Linie dynamisch an, um die Risikokontrolle und die Gewinnentnahme auszugleichen. Sie verwendet die Average True Range (ATR) zur Berechnung der Stop-Loss-Linie und verfolgt effektiv die Preisentwicklung, schützt die Gewinne und reduziert unnötige Stop-Outs. Diese Strategie funktioniert gut für Aktien mit starken Trends und kann eine stetige Rendite erzielen.

Grundsätze

Die Strategie verwendet die Durchschnittliche Wahre Bandbreite (ATR) als Grundlage für den dynamischen Stop-Loss. ATR spiegelt effektiv die Volatilität einer Aktie wider. Die Strategie nimmt zunächst die ATR-Periode als Eingabe, typischerweise 10 Tage. Dann wird der ATR-Wert berechnet. Wenn der Preis steigt, bewegt sich auch die Stop-Loss-Linie nach oben, um den Preis zu verfolgen. Wenn der Preis fällt, bleibt die Stop-Loss-Linie unverändert, um Gewinne zu erzielen.

Speziell berechnet die Strategie den aktuellen ATR und multipliziert ihn dann mit dem Faktor, um die Stop-Loss-Distanz zu erhalten. Wenn der Preis über dem Stop-Loss-Preis liegt, wird eine Long-Position eröffnet. Wenn der Preis darunter liegt, wird eine Short-Position eröffnet. So folgt die Stop-Loss-Linie dem Preis eng und erzielt einen Gradient-Trailing-Effekt.

Vorteile

  • Dynamische Verzögerung des Stoppverlustes anhand der Marktbedingungen
  • ATR berechnet die Stoppdistanz anhand der Marktvolatilität
  • Einfach und einfach zu automatisieren
  • Anpassungsfähige ATR-Periode und Stop-Loss-Faktor für verschiedene Vermögenswerte
  • Vermögenswerte zwischen Verlustverhinderung und Gewinnspanne
  • Reduziert unnötige Stopp-outs

Risiken

  • Die Wahl der richtigen ATR-Parameter ist entscheidend
  • Ein zu naher Stop-Loss kann unnötige Stop-Outs erhöhen
  • Ein zu hoher Stop-Loss-Wert kann dazu führen, dass Risiken nicht kontrolliert werden
  • Die Strategie allein kann die Marktentwicklung nicht bestimmen
  • Notwendigkeit der Bewertung der ATR-Periode und der Faktoreneinstellungen

Verbesserungen

  • Fügen Sie Filter wie gleitende Durchschnitte hinzu, um falsche Signale zu reduzieren
  • Automatische Optimierung der ATR-Periode und des Stop-Loss-Faktors durch maschinelles Lernen
  • Einbeziehung einer Gewinnstrategie, um Gewinne zu erzielen
  • Kombination mit anderen Indikatoren zur Überprüfung von Kauf-/Verkaufssignalen
  • Bessere ATR-Berechnung oder dynamische ATR-Periode
  • Erforschen Sie andere dynamische Trailing Stop-Algorithmen
  • Weitere Optimierung des Stop-Loss-Effektes

Schlussfolgerung

Die Gradient Trailing Stop Loss Strategie gleicht Risiko und Gewinn effektiv aus, indem sie die Stop-Loss-Distanz dynamisch anpasst. Mit einfacher Logik und hoher Konfigurationsfähigkeit ist sie für den algorithmischen Handel geeignet.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

Mehr