Dynamische Stop-Loss-Strategie basierend auf ATR


Erstellungsdatum: 2023-10-10 10:50:21 zuletzt geändert: 2023-10-10 10:50:21
Kopie: 4 Klicks: 936
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie verwendet den ATR-Indikator, um einen dynamischen Stop-Loss-Punkt zu setzen und die Stop-Loss-Position entsprechend der Preisschwankungen anzupassen, um eine Risikokontrolle zu erreichen. Die Strategie führt hauptsächlich durch die Bildung eines Goldforks am 5. und 20. Tag EMA mehrere Eintritte durch, dann wird der ATR-Indikator verwendet, um die Stop-Loss-Position und die Stop-Out-Position einzustellen. Die Stop-Loss-Position wird an die Preisschwankungen angepasst, um mehr Gewinne zu sichern.

Strategieprinzip

Die Strategie beginnt mit dem Übertritt der 5-Tage-EMA über die 20-Tage-EMA, um eine Goldforke zu bilden. Nach dem Eintritt wird das ATR-Merkmal für den Abstand des Eintrittspreises vom aktuellen Preis berechnet und der Stop-Loss-Position auf 1,5 ATR unter dem Eintrittspreis festgelegt. Die Stop-Loss-Position wird dann nach und nach erhöht, wenn der Preis steigt, und wird teilweise gestoppt, wenn der Preis über 3 ATR steigt.

Insbesondere definiert die Strategie folgende Variablen:

  • entry_price: Eintrittspreis
  • Stop_price: Der Stop-Loss-Preis
  • Take_profit_price: Der Preis, den man für die Verringerung des Gewinns erhält.
  • atr_down: Unterhalb der ATR-Zeile
  • atr_up: Oberste ATR-Zeile
  • atr_current: aktuelle ATR-Zeile
  • ATR-Werte

Nach dem Eintritt berechnet manatr_ref als den aktuellen ATR-Wert,atr_div als das ATR-Vielfache des Eintrittspreises entfernt vom aktuellen Preis. Dann wird gemäßatr_div die Position vonatr_down,atr_current undatr_up festgelegt. Der Stop_price ist 1,5 ATR unter dem Eintrittspreis.

Wenn der Preis steigt, berechnen Sie die entsprechenden Positionen von atr_div und atr, indem Sie den aktuellen Preis avg und atr_up vergleichen. Dies führt zu einer schrittweisen Erhöhung der Stop-Loss-Linie und einer Erhöhung der Positionsgewinne.

Wenn der Preis über dem Einstiegspreis 3ATR liegt, wird die Position teilweise platziert, um den Gewinn zu sperren, und das Token wird als “true” markiert. Wenn der Preis weiter steigt, wird die Stop-Loss-Position weiter erhöht.

Strategische Vorteile

  1. Die ATR-Anzeige kann die Stop-Loss-Position dynamisch anpassen, um eine angemessene Stop-Loss-Distanz entsprechend der Marktschwankungen festzulegen.

  2. Bei begrenzten Verlusten schneidet der Trend die Gewinne. Die Stop-Loss-Linie wird allmählich erhöht, so dass die Gewinne sich ständig ansammeln.

  3. Ein Teilstop-Mechanismus kann einen Teil des Gewinns sperren und das Risiko verringern. Die Stop-Loss-Position wird dann weiter erhöht, so dass die Gewinne weiter laufen können.

Strategisches Risiko

  1. Die ATR-Werte sind nicht empfindlich für ungewöhnliche Durchbrüche und können nicht mit den Risiken von Gaps umgehen.

  2. Die EMAs sind nicht in der Lage, eine Trendwende zu beurteilen, und sie können neue Positionen eingehen, wenn sich der Trend ändert.

  3. Die Wahrscheinlichkeit, dass die Verluste nach einer teilweisen Stilllegung wieder rückgängig gemacht werden, ist höher.

  4. Die Parameter sind nicht optimal optimiert, die 1.5 ATR-Stopp und die 3 ATR-Stopp müssen je nach Sorte angepasst werden.

Strategieoptimierung

  1. Es kann in Erwägung gezogen werden, weitere Stop-Loss-Indikatoren, wie den Donchian-Kanal, hinzuzufügen, um die Verzögerung der ATR-Indikatoren zu verhindern.

  2. Es ist möglich, verschiedene Durchschnittsindikatoren zu testen oder eine Trendwende zu beurteilen, z. B. durch die Einbeziehung des MACD.

  3. Das Verhältnis und die Häufigkeit der Teilstopps können optimiert werden, unterschiedliche Sorten können unterschiedliche Einstellungen haben.

  4. Parameter-Optimierung hinzugefügt, um die Stop-Loss-Effekte verschiedener ATR-Mehrzahlen zu testen. Schrittweise Stop-Loss-Stoppfunktion hinzugefügt.

  5. Testen Sie die Performance bei schwachen Trends und berücksichtigen Sie die Strategie nur bei starken Trends.

Zusammenfassen

Die Strategie ist klar und verständlich, und die dynamische Anpassung des Stop-Losses an den ATR-Indikator ist der größte Vorteil, um das Handelsrisiko zu kontrollieren. Die ATR-Indikatoren selbst sind jedoch rückständig und die Parameter müssen optimiert werden. Das Hinzufügen anderer Stop-Loss- und Trendbeurteilungsindikatoren wäre eine Verbesserung.

Strategiequellcode
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 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/
// © ekinbasarkomur

//@version=5
strategy("[EKIN] ATR Exit Strategy", overlay=true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = true)

// Simple EMA tracking
fastEMA = ta.ema(close, 5)
slowEMA = ta.ema (close, 20)
atr = ta.atr(14)

// We define entry price for future reference
var float entry_price = na
// We define stop and take profit for future calculations
var float stop_price = na
var float take_profit_price = na

// We define atr limtim its here
var float atr_down = na
var float atr_up = na
var float atr_current = na
var float atr_ref = na

avg = (low + high) / 2

// Conditions
enterCondition = ta.crossover(fastEMA, slowEMA)
var bool tookProfit = false
timePeriod = time >= timestamp(syminfo.timezone, 2021, 12, 15, 0, 0)
InTrade = strategy.position_size > 0

// Go long if conditions are met
if (enterCondition and timePeriod and not InTrade)
    // Calculate and update variables
    entry_price := avg
    atr_ref := atr
    atr_div = int((avg - entry_price) / atr_ref)
    atr_down := entry_price + (atr_ref * (atr_div - 1.5))
    atr_up := entry_price + (atr_ref * (atr_div + 1))
    atr_current := entry_price + (atr_ref * atr_div) 
    stop_price := (entry_price - (atr_ref * 1.5))
    take_profit_price := (entry_price + (atr_ref * 3))
    strategy.order("buy", strategy.long, qty = 2)

// Enter here if in position
if InTrade or tookProfit
    stopCondition = avg < stop_price
    takeProfitCondition = avg > take_profit_price

    if avg < atr_down
        stopCondition := true

    // Move stop price and exit price if price for each atr price increase
    if avg > atr_up
        if tookProfit
            atr_ref := atr
        atr_div = int((avg - entry_price) / atr_ref)
        atr_down := entry_price + (atr_ref * (atr_div - 1))
        atr_up := entry_price + (atr_ref * (atr_div + 1))
        atr_current := entry_price + (atr_ref * atr_div) 

    // Take half of the investment if current price is 3 atr higher than entry price
    if (takeProfitCondition and timePeriod and InTrade and not tookProfit)
        strategy.order("take_half_profit", strategy.short, qty = 1)
        tookProfit := true

    // Exit position if conditions are met and reset the variables
    if (stopCondition and timePeriod and InTrade)
        if tookProfit
            strategy.order("exit", strategy.short, qty = 1)
        else
            strategy.order("stop_loss", strategy.short, qty = 2)

        tookProfit := false

// Plot EMA's
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.yellow)

// Plot ATR Limit/Stop positions
profit_plot = plot(series = InTrade?atr_up:na, title = "profit", color = color.green, style=plot.style_linebr)
close_plot = plot(series = InTrade?atr_current:na, title = "close", color = color.white, style=plot.style_linebr)
stop_plot = plot(series = InTrade?atr_down:na, title = "stop_loss", color = color.red, style=plot.style_linebr)
fill(profit_plot, close_plot, color = color.new(color.green, 80))
fill(close_plot, stop_plot, color =color.new(color.red,80))