PROTECTED SOURCE SCRIPT
Chandelier Exit 優化版

//version=5
indicator('Chandelier Exit 優化版', shorttitle='CE優化', overlay=true)
var string calcGroup = 'Calculation'
length = input.int(title='ATR週期', defval=22, group=calcGroup)
mult = input.float(title='ATR倍數', step=0.1, defval=3.0, group=calcGroup)
useClose = input.bool(title='使用收盤價計算高低點', defval=true, group=calcGroup)
var string visualGroup = '視覺設定'
showLabels = input.bool(title='顯示買/賣標籤', defval=true, group=visualGroup)
highlightState = input.bool(title='高亮趨勢區域', defval=true, group=visualGroup)
var string alertGroup = '警報設定'
awaitBarConfirmation = input.bool(title="等待K棒收定再確認訊號", defval=false, group=alertGroup)
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
var color longFillColor = color.new(color.green, 90)
var color shortFillColor = color.new(color.red, 90)
var color textColor = color.white
longStopPlot = plot(dir == 1 ? longStop : na, title='多方停損', style=plot.style_linebr, linewidth=2, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='買進訊號', location=location.absolute, style=shape.circle, size=size.tiny, color=longColor)
plotshape(buySignal and showLabels ? longStop : na, title='買標籤', text='買', location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=textColor)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='空方停損', style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='賣出訊號', location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor)
plotshape(sellSignal and showLabels ? shortStop : na, title='賣標籤', text='賣', location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=textColor)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
longStateFillColor = highlightState ? dir == 1 ? longFillColor : na : na
shortStateFillColor = highlightState ? dir == -1 ? shortFillColor : na : na
fill(midPricePlot, longStopPlot, title='多方區域', color=longStateFillColor)
fill(midPricePlot, shortStopPlot, title='空方區域', color=shortStateFillColor)
await = true // 立即通知快訊,無需等K棒收定
alertcondition(dir != dir[1] and await, title='警報: 趨勢改變', message='Chandelier Exit 趨勢改變!')
alertcondition(buySignal and await, title='警報: 買進訊號', message='Chandelier Exit 買進訊號!')
alertcondition(sellSignal and await, title='警報: 賣出訊號', message='Chandelier Exit 賣出訊號!')
indicator('Chandelier Exit 優化版', shorttitle='CE優化', overlay=true)
var string calcGroup = 'Calculation'
length = input.int(title='ATR週期', defval=22, group=calcGroup)
mult = input.float(title='ATR倍數', step=0.1, defval=3.0, group=calcGroup)
useClose = input.bool(title='使用收盤價計算高低點', defval=true, group=calcGroup)
var string visualGroup = '視覺設定'
showLabels = input.bool(title='顯示買/賣標籤', defval=true, group=visualGroup)
highlightState = input.bool(title='高亮趨勢區域', defval=true, group=visualGroup)
var string alertGroup = '警報設定'
awaitBarConfirmation = input.bool(title="等待K棒收定再確認訊號", defval=false, group=alertGroup)
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
var color longFillColor = color.new(color.green, 90)
var color shortFillColor = color.new(color.red, 90)
var color textColor = color.white
longStopPlot = plot(dir == 1 ? longStop : na, title='多方停損', style=plot.style_linebr, linewidth=2, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='買進訊號', location=location.absolute, style=shape.circle, size=size.tiny, color=longColor)
plotshape(buySignal and showLabels ? longStop : na, title='買標籤', text='買', location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=textColor)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='空方停損', style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='賣出訊號', location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor)
plotshape(sellSignal and showLabels ? shortStop : na, title='賣標籤', text='賣', location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=textColor)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
longStateFillColor = highlightState ? dir == 1 ? longFillColor : na : na
shortStateFillColor = highlightState ? dir == -1 ? shortFillColor : na : na
fill(midPricePlot, longStopPlot, title='多方區域', color=longStateFillColor)
fill(midPricePlot, shortStopPlot, title='空方區域', color=shortStateFillColor)
await = true // 立即通知快訊,無需等K棒收定
alertcondition(dir != dir[1] and await, title='警報: 趨勢改變', message='Chandelier Exit 趨勢改變!')
alertcondition(buySignal and await, title='警報: 買進訊號', message='Chandelier Exit 買進訊號!')
alertcondition(sellSignal and await, title='警報: 賣出訊號', message='Chandelier Exit 賣出訊號!')
Skrip dilindungi
Skrip ini diterbitkan sebagai sumber tertutup. Akan tetapi, anda boleh menggunakannya dengan percuma dan tanpa had – ketahui lebih lanjut di sini.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.
Skrip dilindungi
Skrip ini diterbitkan sebagai sumber tertutup. Akan tetapi, anda boleh menggunakannya dengan percuma dan tanpa had – ketahui lebih lanjut di sini.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.