
Diese Strategie nutzt die Leuchtenindikatoren, um die Richtung und die Stärke des Preisbruchs zu bestimmen, wodurch ein Kauf- und Verkaufssignal erzeugt wird.
Die Strategie basiert auf einem Leuchtturm-Indikator, der eine Stop-Loss-Linie basierend auf den Höchst-, Tiefst- und Durchschnittswerten der realen Schwankungen des Preises setzt. Insbesondere berechnet die Strategie die durchschnittliche reale Schwankung der 22 Tage und multipliziert sie mit einem Koeffizienten (default 3). Anhand dieser Werte wird dann eine Long Stop-Loss-Linie und eine Short Stop-Loss-Linie festgelegt.
Die Strategie führt nur einen Kaufvorgang aus. Konkret erzeugt sie ein Kaufsignal, wenn der Preis die letzte lange Stop-Line überschreitet. Dann erzeugt sie ein Verkaufssignal und platziert die Position, wenn der Preis die kurze Stop-Line überschreitet.
Die Risiken können auf folgende Weise gelöst werden:
Diese Strategie nutzt die dynamische Stop-Loss-Linie des Leuchtenindikators, um die Gelegenheit für eine Preisumkehr zu identifizieren. Sie kauft nur, wenn der Preis die lange Stop-Loss-Linie nach oben durchbricht, und verkauft, wenn der Preis die kurze Stop-Loss-Linie fällt, um eine einseitige Operation zu erreichen. Die Strategie ist eine einfache Strategie, die eine Umkehrung beider Seiten vermeidet.
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit Strategy", overlay=true)
length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
var color longColor = color.green
var color shortColor = color.red
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))
changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')
// Define initial capital
initial_capital =25
// Trigger buy order and close buy order on sell signal
if buySignal
strategy.entry("Buy", strategy.long, qty = initial_capital / close)
if sellSignal
strategy.close("Buy")