
Strategi ini menggunakan indikator lampu gantung untuk menentukan arah dan kekuatan penembusan harga, yang menghasilkan isyarat beli dan jual. Ia hanya melakukan operasi beli.
Strategi ini adalah berdasarkan indikator lampu gantung, yang menetapkan garis stop loss berdasarkan harga tertinggi, harga terendah, dan purata pergerakan sebenar harga. Secara khusus, strategi ini mengira purata pergerakan sebenar pada hari ke-22 dan dikalikan dengan faktor ((default 3)). Kemudian, berdasarkan nilai ini, ia menetapkan garis stop loss panjang dan garis stop loss pendek. Apabila strategi memegang banyak kedudukan, ia akan menghasilkan isyarat jual jika harga menembusi garis stop loss panjang; jika harga menembusi garis stop loss pendek ia akan menghasilkan isyarat beli.
Strategi ini hanya melakukan operasi beli. Secara khusus, ia menghasilkan isyarat beli apabila harga menembusi garis henti panjang terakhir. Ia kemudian menghasilkan isyarat jual dan melonggarkan kedudukan apabila harga menembusi garis henti pendek.
Penyelesaian risiko:
Strategi ini menggunakan indikator lampu gantung untuk mengenal pasti peluang harga berbalik. Ia hanya membeli apabila harga menembusi garis hentian panjang ke atas dan menjual apabila harga menembusi garis hentian pendek, mewujudkan strategi sederhana yang bertindak satu sisi, mengelakkan pergerakan yang berbalik di kedua-dua belah pihak.
/*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")