Strategi ini menggunakan penunjuk Chandelier Exit untuk menentukan arah dan momentum harga dan menjana isyarat beli dan jual.
Strategi ini berdasarkan pada penunjuk Chandelier Exit yang menetapkan garis stop-loss berdasarkan tertinggi tertinggi, terendah terendah dan Julat Benar Purata. Khususnya, ia mengira ATR 22 hari dan mengalikannya dengan pekali (default 3) untuk memperoleh nilai untuk garis berhenti panjang dan pendek. Strategi ini menghasilkan isyarat jual apabila harga melanggar di bawah berhenti panjang apabila panjang, dan isyarat beli apabila harga melanggar di atas berhenti pendek apabila pendek.
Strategi ini hanya melakukan operasi beli. Ia mencetuskan entri panjang apabila harga memecahkan di atas garis berhenti panjang sebelumnya, dan mewujudkan isyarat keluar apabila harga jatuh di bawah garis berhenti pendek, menutup kedudukan panjang.
Pengurangan Risiko:
Strategi ini mengenal pasti peluang pembalikan menggunakan garis berhenti dinamik dari penunjuk Chandelier Exit. Ia membeli pada pembiakan ke atas garis berhenti panjang dan menjual apabila harga jatuh di bawah garis berhenti pendek, melaksanakan strategi satu sisi yang mudah yang mengelakkan pembalikan ke atas / ke bawah. Ia mengawal risiko dengan berkesan tetapi tidak mempunyai peruntukan stop loss dan mengambil keuntungan. Peluang pengoptimuman termasuk menambah penapis dan mekanisme mengambil kerugian / keuntungan berhenti untuk menjadikan strategi lebih mantap.
/*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")