Die Ressourcen sind geladen. Beförderung...

Dynamische Gewinn- und Stop-Loss-Anpassungsstrategie auf Basis von ATR und EMA

Schriftsteller:ChaoZhang, Datum: 2024-05-28 14:15:56
Tags:ATREMA

img

Übersicht

Diese Strategie verwendet zwei Indikatoren, ATR (Average True Range) und EMA (Exponential Moving Average), um die Gewinn- und Stop-Loss-Level dynamisch anzupassen, um sich an die Marktvolatilität anzupassen. Die Hauptidee der Strategie besteht darin, den ATR-Indikator zu verwenden, um die Marktvolatilität zu messen und die Gewinn- und Stop-Loss-Level basierend auf der Volatilitätsgröße festzulegen. Gleichzeitig wird der EMA-Indikator verwendet, um die Handelsrichtung zu bestimmen. Wenn der Preis über die EMA bricht, wird eine Long-Position geöffnet, und wenn der Preis unter die EMA bricht, wird eine Short-Position geöffnet. Diese Strategie kann automatisch die Gewinn- und Stop-Loss-Level entsprechend den Veränderungen der Marktvolatilität anpassen und damit den Zweck der dynamischen Risikokontrolle erreichen.

Strategieprinzip

  1. Berechnen des ATR-Indikators zur Messung der Marktvolatilität.
  2. Die dynamische Stop-Loss-Ebene wird anhand des ATR-Werts und des Eingabe-Multiplikatorparameters berechnet.
  3. Verwenden Sie den EMA-Indikator als Filterbedingungen. Öffnen Sie eine Long-Position, wenn der Preis über die EMA bricht, und eine Short-Position, wenn der Preis unter die EMA bricht.
  4. Während der Halte einer Position werden die Gewinns- und Stop-Loss-Level kontinuierlich anhand von Preisänderungen und dynamischen Stop-Loss-Leveländerungen angepasst.
  5. Wenn der Preis das dynamische Stop-Loss-Niveau erreicht, schließt man die Position und eröffnet eine Umkehrposition.

Strategische Vorteile

  1. Starke Anpassungsfähigkeit: Durch die dynamische Anpassung der Gewinn- und Stop-Loss-Level kann sich die Strategie an Veränderungen der Volatilität unter unterschiedlichen Marktbedingungen anpassen und Risiken kontrollieren.
  2. Starke Trendverfolgungsfähigkeit: Der EMA-Indikator dient zur Bestimmung der Handelsrichtung und kann Markttrends effektiv erfassen.
  3. Anpassungsfähige Parameter: Durch die Anpassung der ATR-Periode und mehrerer Parameter können das Risiko und die Rendite der Strategie flexibel kontrolliert werden.

Strategische Risiken

  1. Parameterrisiko: Die Einstellung der ATR-Periode und mehrerer Parameter wirkt sich direkt auf die Leistung der Strategie aus.
  2. Schwankende Marktrisiken: In einem schwankenden Markt kann häufiges Öffnen und Schließen von Positionen zu großen Schwankungen und Verlusten durch Transaktionsgebühren führen.
  3. Trendumkehrrisiko: Wenn sich der Markttrend umkehrt, kann die Strategie aufeinanderfolgende Verluste erleiden.

Strategieoptimierungsrichtlinien

  1. Einführung weiterer technischer Indikatoren wie MACD und RSI zur Verbesserung der Genauigkeit der Trendbeurteilung.
  2. Optimierung der Berechnungsmethode für Take-Profit- und Stop-Loss-Level, z. B. Einführung von Trailing-Stop-Loss- und Dynamic-Ratio-Stop-Loss-Methoden.
  3. Optimierung von Parametern, um die beste Kombination aus ATR-Zeit und mehreren Parametern zu finden, um die Stabilität und Rentabilität der Strategie zu verbessern.
  4. Hinzufügen eines Positionsmanagement-Moduls zur dynamischen Anpassung der Positionsgröße anhand der Marktvolatilität und des Kontorisikoniveaus.

Zusammenfassung

Diese Strategie nutzt die ATR- und EMA-Indikatoren, um die Gewinn- und Stop-Loss-Level dynamisch anzupassen, um sich an Veränderungen der Marktvolatilität anzupassen, während die EMA-Indikatoren zur Bestimmung der Handelsrichtung verwendet werden.


/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title='UT MB&SS Bot', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')

xATR = ta.atr(c)
nLoss = a * xATR

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATR_trailing_stop)
below = ta.crossover(xATR_trailing_stop, ema)

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

barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop

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

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

stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))

if pos == 1
    strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
    strategy.exit('Exit Short', 'UT Short', stop=stop_level)





if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Verwandt

Mehr