Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

/@version=5

// Copyright (c) 2019-present, Alex Orekhov (everget)

// Chandelier Exit script may be freely distributed under the terms of the GPL-3.0 license.

indicator('Chandelier Exit', shorttitle='CE + EMA', overlay=true,timeframe="", timeframe_gaps=true)

//indicator(title="Moving Average Exponential", shorttitle="EMA + UT BOTS", overlay=true,


timeframe="", timeframe_gaps=true)

len = input.int(9, minval=1, title="Length")

var string calcGroup = 'Calculation'

length = input.int(title='ATR Period', defval=22, group=calcGroup)

mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0, group=calcGroup)

useClose = input.bool(title='Use Close Price for Extremums', defval=true, group=calcGroup)

var string visualGroup = 'Visuals'

showLabels = input.bool(title='Show Buy/Sell Labels', defval=true, group=visualGroup)

highlightState = input.bool(title='Highlight State', defval=true, group=visualGroup)

var string alertGroup = 'Alerts'

awaitBarConfirmation = input.bool(title="Await Bar Confirmation", defval=true, 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.new(color.white, 0)

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=textColor)

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=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='Long State Filling', color=longStateFillColor)

fill(midPricePlot, shortStopPlot, title='Short State Filling', color=shortStateFillColor)

await = awaitBarConfirmation ? barstate.isconfirmed : true


alertcondition(dir != dir[1] and await, title='Alert: CE Direction Change', message='Chandelier Exit
has changed direction!')

alertcondition(buySignal and await, title='Alert: CE Buy', message='Chandelier Exit Buy!')

alertcondition(sellSignal and await, title='Alert: CE Sell', message='Chandelier Exit Sell!')

//@version=5

//indicator(title="Moving Average Exponential", shorttitle="EMA + UT BOTS", overlay=true,


timeframe="", timeframe_gaps=true)

len1 = input.int(9, minval=1, title="Length")

src = input(close, title="Source")

offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

out = ta.ema(src, len1)

plot(out, title="EMA", color=color.blue, offset=offset)

ma(source, length, type) =>

switch type

"SMA" => ta.sma(source, length)

"EMA" => ta.ema(source, length)

"SMMA (RMA)" => ta.rma(source, length)

"WMA" => ta.wma(source, length)

"VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)",


"WMA", "VWMA"], group="Smoothing")

smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100,


group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)

plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

You might also like