
Strategi ini menggunakan indikator lampu gantung untuk menentukan arah dan intensitas harga yang akan pecah, sehingga menghasilkan sinyal beli dan jual. Ia hanya melakukan operasi beli.
Strategi ini didasarkan pada indikator lampu gantung, indikator lampu gantung adalah untuk mengatur garis stop loss berdasarkan harga tertinggi, harga terendah dan rata-rata amplitudo fluktuasi nyata. Secara khusus, strategi ini menghitung rata-rata amplitudo fluktuasi nyata selama 22 hari dan dikalikan dengan faktor ((default 3)). Kemudian berdasarkan nilai ini, mengatur garis stop loss panjang dan garis stop loss pendek.
Strategi ini hanya melakukan operasi beli-beli. Secara khusus, ia menghasilkan sinyal beli ketika harga menerobos garis berhenti panjang terakhir. Kemudian menghasilkan sinyal jual dan melonggarkan posisi ketika harga menembus garis berhenti pendek.
Solusi untuk Mengatasi Risiko:
Strategi ini memanfaatkan indikator stop loss yang dinamis untuk mengidentifikasi peluang reversal harga. Ini hanya membeli ketika harga melintasi garis stop loss panjang ke atas dan menjual ketika harga turun ke garis stop loss pendek, untuk mencapai operasi satu sisi, strategi sederhana untuk menghindari reversal di kedua sisi. Strategi ini mengontrol risiko secara efektif, tetapi tidak ada pengaturan stop loss dan stop loss.
/*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")