
Dies ist eine Trend-Tracking-Strategie basierend auf dem ATR (Average True Range) Indikator, kombiniert mit einem dynamischen Stop-Loss und einem Mittellinien-Kreuzsignal. Die Strategie ermittelt die Marktvolatilität durch die Berechnung des ATR und nutzt diese Information, um einen dynamischen Tracking-Stop-Loss-Line zu erstellen.
Die Kernlogik der Strategie basiert auf folgenden Schlüsselberechnungen:
Es ist eine vollständige Handelsstrategie, die die dynamische Verfolgung von Stop-Loss- und Gleichgewichtssystemen kombiniert. Die Strategie kann durch die empfohlene Optimierung der Richtung weiter verbessert werden.
/*backtest
start: 2024-05-15 00:00:00
end: 2024-08-08 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy(title="UT Bot Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
a = input.float(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")
// Calculate ATR
xATR = ta.atr(c)
nLoss = a * xATR
// Source for calculations
src = h ? request.security(syminfo.tickerid, timeframe.period, hlc3) : close
// ATR Trailing Stop logic
var float xATRTrailingStop = na
if (not na(xATRTrailingStop[1]) and src > xATRTrailingStop[1] and src[1] > xATRTrailingStop[1])
xATRTrailingStop := math.max(xATRTrailingStop[1], src - nLoss)
else if (not na(xATRTrailingStop[1]) and src < xATRTrailingStop[1] and src[1] < xATRTrailingStop[1])
xATRTrailingStop := math.min(xATRTrailingStop[1], src + nLoss)
else
xATRTrailingStop := src > xATRTrailingStop[1] ? src - nLoss : src + nLoss
// Position logic
var int pos = 0
if (not na(xATRTrailingStop[1]) and src[1] < xATRTrailingStop[1] and src > xATRTrailingStop[1])
pos := 1
else if (not na(xATRTrailingStop[1]) and src[1] > xATRTrailingStop[1] and src < xATRTrailingStop[1])
pos := -1
else
pos := pos[1]
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
// Entry and Exit Signals
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
// Strategy Execution
if (buy)
strategy.entry("UT Long", strategy.long)
if (sell)
strategy.entry("UT Short", strategy.short)
// Plotting and Alerts
plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.tiny)
barcolor(src > xATRTrailingStop ? color.green : src < xATRTrailingStop ? color.red : na)
alertcondition(buy, title="UT Long", message="UT Long")
alertcondition(sell, title="UT Short", message="UT Short")