Dynamische Stop-Loss-Strategie für gleitende Durchschnitte

Schriftsteller:ChaoZhang, Datum: 2024-01-29 15:52:43
Tags:

img

Übersicht

Diese Strategie verwendet die Idee des dynamischen Trailing Stop basierend auf ATR und Preisextremen, um lange und kurze Stop-Loss-Linien zu berechnen. Kombiniert mit der Chandelier Exit-Idee beurteilt sie die lange/kurze Richtung basierend auf dem Stop-Loss-Line-Breakout. Wenn die Stop-Loss-Linie nach oben bricht, wird sie als bullisch und lang eingegeben. Wenn die Stop-Loss-Linie nach unten bricht, wird sie als bärisch und kurz eingegeben.

Die Strategie verfügt sowohl über Stop-Loss-Management- als auch über Einstiegssignalbeurteilungsfunktionen.

Strategie Logik

Die Strategie besteht aus folgenden Hauptteilen:

  1. Berechnung der langen/kurzen Stop-Loss-Linien auf der Grundlage von ATR

    Auf der Grundlage der vom Benutzer definierten ATR-Periodenlänge und Multiplikatormultipliziert wird der Echtzeit-ATR berechnet.

     longStop = Highest - ATR  
     shortStop = Lowest + ATR
    
  2. Beurteilen Sie die Handelsrichtung anhand des Ausbruchs

    Vergleichen Sie die Stop-Loss-Linien zwischen der vorherigen und der aktuellen Bar. Wenn die Stop-Loss-Line der aktuellen Bar ausbricht, werden Handelssignale ausgelöst:

     Long stop-loss line breakout upwards, long entry  
     Short stop-loss line breakout downwards, short entry   
    
  3. Einrichtung von Stop-Loss und Take-Profit auf der Grundlage der Risiko-Rendite-Ratio

    Auf der Grundlage des vom Benutzer definierten Risikoverhältnisses (RiskRewardRatio) werden Stop-Loss-Distanz und Take-Profit-Distanz aus dem ATR berechnet. Stop-Loss- und Take-Profit-Order werden bei der Eröffnung von Positionen gesetzt.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Dynamischer Stop-Loss

    Die Einführung dynamischer Trailing-Stop-Loss-Linien hilft, den Stop-Loss rechtzeitig zu stoppen und das Abwärtsrisiko zu kontrollieren.

  2. Doppelfunktionen

    Die Stop-Loss-Linie dient sowohl als Stopp-Loss-Management-Tool als auch als Einstiegszustandsrichter und reduziert die Komplexität der Strategie.

  3. Anpassungsfähige Risiko-Rendite-Ratio

    Höhere Gewinne mit einem vordefinierten Risiko-Rendite-Verhältnis.

  4. Einfach zu verstehen und zu erweitern

    Einfache Struktur, leicht zu verstehen und für die Erweiterung zu optimieren.

Risikoanalyse

Für diese Strategie können einige Risiken bestehen:

  1. Zweiwege Risiken

    Da es sich um eine zweiseitige Handelsstrategie handelt, geht es sowohl um langfristige als auch um kurzfristige Risiken.

  2. Abhängigkeit von ATR-Parametern

    Die ATR-Parameter beeinflussen unmittelbar die Stop-Loss-Linien und die Handelsfrequenz.

  3. Anpassungsfähigkeit an die Trends

    Die Strategie eignet sich besser für Range-gebundene Szenarien mit plötzlichen Ausbrüchen.

Die Optimierungen zur Bewältigung der oben genannten Risiken sind:

  1. Einbeziehung von Trendindikatoren

    Verwenden Sie MA und andere Trendindikatoren, um die Marktentwicklung zu bestimmen, und vermeiden Sie den Handel gegen Trends.

  2. Optimierung der Parameter

    Optimieren der Kombination von ATR-Parametern und Risiko-Rendite-Verhältnis für einen vernünftigeren Stop-Loss und Take-Profit.

  3. Zusätzliche Filter

    Hinzufügen von Handelsvolumen- oder Volatilitätsfiltern zur Gewährleistung der Handelsqualität.

Optimierungsrichtlinien

Es gibt noch Raum für eine weitere Optimierung der Strategie:

  1. Maschinelles Lernen einbeziehen

    Einführung von Modellen für maschinelles Lernen zur Vorhersage von Preistrends für eine höhere Eingangsgenauigkeit.

  2. Aufbau eines risikofreien Portfolios mit Optionen

    Verwenden Sie Optionen, um die Kursschwankungen der zugrunde liegenden Vermögenswerte abzusichern und risikofreie Arbitrageportfolios zu erstellen.

  3. Marktübergreifende Multi-Asset-Arbitrage

    Durchführung einer statistischen Arbitrage zwischen verschiedenen Märkten und Anlageklassen, um ein stabiles Alpha zu erhalten.

  4. Algorithmenhandel

    Nutzen Sie Algorithmus-Trading-Engines, um Strategien und Handel effizient zu testen.

Schlussfolgerung

Dieser Artikel analysiert gründlich eine quantitative Handelsstrategie, die auf dynamischem Trailing Stop Loss basiert. Die Strategie verfügt gleichzeitig über Stop-Loss-Management-Funktionalität und Handelssignalbestimmung, die Risiken effektiv kontrolliert. Wir haben auch die Vorteile, potenziellen Risiken und zukünftigen Optimierungen der Strategie diskutiert. Es ist eine sehr praktische Handelsstrategie, die weitere Forschung und Anwendung wert ist.


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

//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)

// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr

// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1

// Entry Signals
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')

// Alerts
if (dir != dir[1])
    strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
    strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
    strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")


Mehr