Trend nach Strategie mit Trailing Stop Loss

Schriftsteller:ChaoZhang, Datum: 23.10.2023
Tags:

img

Übersicht

Diese Strategie kombiniert Trendfolgen mit Trailing Stop Loss und nimmt Gewinnlogik, um kontinuierlich den Trend für Gewinne zu fahren. Sie verwendet gleitenden Durchschnitt, um die Trendrichtung zu bestimmen und Handelssignale zu generieren, wenn der Preis durch die MA-Linien bricht. Nach dem Eintritt in die Long-Position setzt die Strategie einen Stop-Loss basierend auf dem ATR-Wert und passt ihn mit Trailing Stop-Loss-Logik an, um dem Trend zu folgen. Wenn der Preis auf ein bestimmtes Niveau steigt, braucht es einen teilweisen Gewinn, um einige Gewinne zu erzielen.

Strategie Logik

  1. Setzen Sie Backtest Start- und Stopzeitstempel basierend auf Benutzerinput.

  2. Initialisieren Sie den Long- und Short-Stop-Preis und die Prozentsätze.

  3. Der Long wird eingegeben, wenn der Preis über die MA-Linie bricht.

  4. Berechnen Sie die Stop-Loss-Distanz mit ATR und legen Sie den Stop-Loss-Preis fest.

  5. Da der Preis weiter steigt, verlässt er den Verlust nach oben, um mehr Gewinne zu erzielen.

  6. Wenn der Preis die Gewinnschwelle erreicht, nehmen Sie einen teilweisen Gewinn.

  7. Wenn der Kurs unter die MA-Linie fällt, gehen Sie kurz ein.

  8. Berechnen Sie die Stop-Loss-Distanz mit ATR und legen Sie den Stop-Loss-Preis fest.

  9. Da der Preis weiter sinkt, verlässt er den Verlust, um mehr Gewinne zu erzielen.

  10. Wenn der Preis die Gewinnschwelle erreicht, nehmen Sie einen teilweisen Gewinn.

Vorteile

  • Der Stop-Loss kann Trends folgen und mehr Gewinne erzielen, während die Gewinne geschützt werden.

  • Dynamische ATR-Stop-Loss reagieren besser auf Marktschwankungen als feste Stop-Loss.

  • Ein Teilgewinn kann dazu beitragen, einige Gewinne zu sichern und die Abzugsrisiken zu verringern.

  • Einfache und klare Logik, leicht zu verstehen und umzusetzen.

Risiken

  • Eine plötzliche Trendumkehr kann bei großer Stop-Loss-Distanz zu einem großen Verlust führen.

  • Der Stop-Loss auf Basis von ATR kann zu empfindlich sein und vorzeitig gestoppt werden.

  • Eine unzulässige partielle Gewinnquote kann Trends verfehlen oder Verluste erhöhen.

  • Viele Parameter müssen optimiert werden, wie ATR-Periode, Rücklaufanteile, Gewinnverhältnis.

  • Die Strategie beruht ausschließlich auf MA und ATR, falsche Signale können auftreten.

Optimierung

  • Fügen Sie andere Indikatoren wie MACD, KD hinzu, um Handelssignale zu filtern und falsche MA-Signale zu vermeiden.

  • Betrachten wir dynamische Gewinnverhältnisse, die auf der Stärke des Trends basieren.

  • Versuche verschiedene ATR-Perioden für eine optimale Stabilität oder verwende andere Indikatoren für den Stop-Loss.

  • Einführung von maschinellem Lernen zur automatischen Optimierung von Parametern und dynamischen Anpassung.

  • Verwenden Sie Deep-Learning-Modelle, um Trends zu erkennen und automatisch Signale zu erzeugen.

Zusammenfassung

Die Strategie integriert Trailing Stop Loss, Dynamic ATR Stop Loss und partielle Take Profit, um Trends zu folgen und Drawdowns zu kontrollieren. Aber sie hat einige Einschränkungen wie einfache Trenddetektion und schwierige Parameteroptimierung. Dies gibt gute Richtungen, um die Strategie weiter zu verbessern, indem mehr Techniken und Indikatoren verwendet werden, um Stabilität und Rentabilität zu verbessern. Insgesamt bietet sie gute Referenzen für die Gestaltung von Stop Loss und Take Profit-Mechanismen für den Live-Handel.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// © felipefs

//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)

//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false

//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0

long_stop_price := if (strategy.position_size > 0)
    stopValue = close * (1 - long_trail_perc)
    max(stopValue, long_stop_price[1])
else
    0

short_stop_price := if (strategy.position_size < 0)
    stopValue = close * (1 + short_trail_perc)
    min(stopValue, short_stop_price[1])
else
    999999

//Função de Debug
debug(value) =>
    x = bar_index
    y = close
    label.new(x, y, tostring(value))
    
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
 
//ATR Stop
 
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR

// if (strategy.position_size > 0)
//     xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)

Mehr