Anpassungsfähige Strategie zur Verzögerung

Schriftsteller:ChaoZhang, Datum: 2023-10-08 15:06:28
Tags:

Übersicht

Diese Strategie implementiert hauptsächlich einen anpassungsfähigen Stop-Loss-Mechanismus, der die Stop-Loss-Position automatisch anhand von Kursschwankungen anpasst, um einen besseren Stop-Loss-Effekt zu erzielen. Die Strategie verwendet den ATR-Indikator, um einen angemessenen Stop-Loss-Bereich zu berechnen, und erzeugt Handelssignale in Kombination mit EMA-Linien. Sie eröffnet lange oder kurze Positionen, wenn der Preis durch EMA-Linien bricht, und verwendet einen anpassungsfähigen Stop-Loss-Algorithmus, um den Stop-Loss zu verfolgen.

Strategie Logik

  1. Der ATR-Indikator wird berechnet und der ATR-Wert multipliziert mit dem Parameter a als Stop-Loss-Bereich nLoss festgelegt.
  2. Berechnen Sie die EMA-Linie.
  3. Gehen Sie lang, wenn der Preis über die EMA-Linie bricht, und kurz, wenn der Preis unter die EMA-Linie bricht.
  4. Verwenden Sie einen adaptiven Stop-Loss-Algorithmus, um die Stop-Loss-Position xATRTrailingStop automatisch anzupassen, mit folgenden Regeln:
    • Wenn der Preis über die Stop-Loss-Position bricht, wird der Stop-Loss auf den Preis minus den Stop-Loss-Bereich nLoss angepasst.
    • Wenn der Preis unter die Stop-Loss-Position bricht, wird der Stop-Loss auf den Preis plus den Stop-Loss-Bereich nLoss angepasst.
    • Ansonsten bleibt der Stop-Loss unverändert.
  5. Schließung der Stop-Loss-Position, wenn der Preis den Stop-Loss-Level erreicht.

Analyse der Vorteile

  1. Implementiert einen anpassungsfähigen Stop-Loss-Mechanismus, der automatisch den Stop-Loss-Bereich anhand der Marktvolatilität anpasst und so die Risiken wirksam kontrolliert.
  2. Berechnet einen angemessenen Stoppverlustbereich mit dem ATR-Indikator und vermeidet einen zu großen oder zu kleinen Stoppverlust.
  3. Nutzt die EMA, um Handelssignale zu generieren, unnötige Trades zu reduzieren und Marktlärm zu filtern.
  4. Einfache und klare Strategielogik, leicht zu verstehen und zu optimieren.
  5. Ermöglicht die Anpassung der Eingabeparameter an verschiedene Marktbedingungen.

Risiken und Verbesserungen

  1. Die EMA-Signale können sich verzögern, was zu einem späten Eintritt führt.
  2. Unsichere Haltedauer, nicht in der Lage, die Größe eines einzigen Stop-Loss zu kontrollieren.
  3. Es kann vorkommen, dass bei stark trendigen Märkten zu häufig ein Stop-Loss ausgelöst wird.
  4. Parameter wie ATR-Periode, Stop-Loss-Multiplikator sollten anhand der Symbolmerkmale eingestellt werden, Standardwerte sollten nicht blind verwendet werden.

Optimierungsrichtlinien

  1. Überlegen Sie, ob Sie einen Trendindikator hinzufügen und Trades in Trendrichtung machen, um Trades gegen den Trend zu vermeiden.
  2. Anpassung des Stop-Loss-Multiplikators anhand der Volatilität, um einen breiteren Stop bei hoher Volatilität zu ermöglichen.
  3. Angabe der maximalen Haltezeit, aktiver Stop Loss nach Überschreitung einer bestimmten Zeit.
  4. Fügen Sie eine bewegliche Stop-Loss-Strategie hinzu und erhöhen Sie den Stop allmählich, wenn sich der Preis bewegt.
  5. Anpassung des ATR-Periodenparameters anhand der Symbolmerkmale.

Schlussfolgerung

Die Strategie hat eine klare und einfache Logik, Risiken mit adaptiven ATR-basierten Stop-Loss und EMA für Handelssignale zu verwalten. Aber es ist relativ passiv mit viel Raum für Optimierung. Erwägen Sie, Trendbeurteilung, dynamische Parameter Anpassung basierend auf Marktbedingungen hinzuzufügen, um es proaktiver zu machen. Insgesamt dient es als eine gute Idee und Vorlage für Umkehr Stop-Loss-Strategien, aber Parameter sollten für verschiedene Symbole abgestimmt werden, anstatt blind Standardwerte anzuwenden.


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

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy  and time_cond)
strategy.entry("short", false, when = sell and time_cond)

Mehr