Advertisement
Kordan

Chandelier Exit + RSI + EMA Indicators

Apr 23rd, 2025 (edited)
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
RBScript 4.75 KB | Source Code | 0 0
  1. //@version=6
  2. // Combined by Kordan
  3. // Version 1
  4. indicator(title="Chandelier Exit + RSI + EMA Indicators", shorttitle="CE+RSI+EMA", format=format.price, precision=2)
  5.  
  6. // Входные параметры для RSI
  7. var string GroupRSI = 'Chandelier RSI Indicators'
  8. rsiFastLength = input.int(25, minval=1, title="RSI Fast", group=GroupRSI)
  9. rsiSlowLength = input.int(100, minval=2, title="RSI Slow", group=GroupRSI)
  10.  
  11. // Функция для расчета RSI
  12. f_rsi(source, length) =>
  13.     change = ta.change(source)
  14.     up = ta.rma(math.max(change, 0), length)
  15.     down = ta.rma(-math.min(change, 0), length)
  16.     down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
  17.  
  18. // Расчет RSI
  19. rsiSlow = f_rsi(close, rsiSlowLength)
  20. rsiFast = f_rsi(close, rsiFastLength)
  21.  
  22. // Назначение цветов
  23. var color rsislowColor = color.aqua
  24. var color rsifastColor = color.yellow
  25. var color hlineColor50 = color.new(color.gray, 50)
  26. var color hlineColor70 = color.new(color.red, 60)
  27. var color hlineColor30 = color.new(color.green, 60)
  28. var color rsiBColor = color.new(color.red, 80)
  29. var color rsiSColor = color.new(color.green, 80)
  30.  
  31. // Добавление уровней
  32. hline(50, "Mid Level", color=hlineColor50, editable=false)
  33. hline(70, "Upper Band", color=hlineColor70, editable=false)
  34. hline(30, "Lower Band", color=hlineColor30, editable=false)
  35.  
  36. // Заполнение между графиками только если оба RSI отображаются
  37. p1 = plot(rsiSlow, "RSI Slow", linewidth=3, color=rsislowColor)
  38. p2 = plot(rsiFast, "RSI Fast", linewidth=1, color=rsifastColor)
  39.  
  40. // Подкрашивание областей выше и ниже уровней
  41. bgColor = (rsiSlow > rsiFast) ? rsiBColor : (rsiSlow < rsiFast) ? rsiSColor : na
  42. fill(p1, p2, color=bgColor, editable=false)
  43.  
  44. ////////////////////////////////////////////////////////////////////////////////////////
  45.  
  46. //=======================================================
  47. // Chandelier Exit Indicator
  48. //=======================================================
  49.  
  50. var string calcGroupCE = 'Chandelier Exit Indicator'
  51.  
  52. // Группа параметров для визуализации и оповещений
  53. showLabels = input.bool(title='Показать Buy/Sell Labels', defval=true, group=calcGroupCE)
  54.  
  55. length = input.int(title='ATR Period', defval=1, group=calcGroupCE)
  56. mult = input.float(title='ATR Multiplier', step=0.1, defval=1.85, group=calcGroupCE)
  57.  
  58. // Расчет ATR и уровней стоп-лоссов
  59. atr = mult * ta.atr(length)
  60.  
  61. longStop = ta.highest(high, length) - atr
  62. longStopPrev = nz(longStop[1], longStop)
  63. longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
  64.  
  65. shortStop = ta.lowest(low, length) + atr
  66. shortStopPrev = nz(shortStop[1], shortStop)
  67. shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
  68.  
  69. // Определение направления тренда
  70. var int dir = 1
  71. dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
  72.  
  73. // Цвета для визуализации
  74. var color longColor = color.green
  75. var color shortColor = color.red
  76. var color textColor = color.white
  77.  
  78. // Условия для сигналов покупки и продажи
  79. buySignal = dir == 1 and dir[1] == -1
  80. sellSignal = dir == -1 and dir[1] == 1
  81. plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute,
  82.           style=shape.labelup, size=size.tiny, color=longColor, textcolor=textColor,
  83.           force_overlay=true, editable=false)
  84. plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute,
  85.           style=shape.labeldown, size=size.tiny, color=shortColor,textcolor=textColor,
  86.           force_overlay=true, editable=false)
  87.  
  88. // Условия для оповещений
  89. awaitCondition = barstate.isconfirmed
  90. alertcondition(dir != dir[1] and awaitCondition , title='Alert: CE Direction Change' , message='Chandelier Exit has changed direction!')
  91. alertcondition(buySignal and awaitCondition , title='Alert: CE Buy' , message='Chandelier Exit Buy!')
  92. alertcondition(sellSignal and awaitCondition , title='Alert: CE Sell' , message='Chandelier Exit Sell!')
  93.  
  94. ////////////////////////////////////////////////////////////////////////////////////////
  95.  
  96. //=======================================================
  97. // EMA Indicator
  98. //=======================================================
  99.  
  100. var string calcGroupEMA = 'EMA Indicator'
  101.  
  102. len = input.int(50, minval=1, title="EMA Period", group=calcGroupEMA)
  103. plot(ta.ema(close, len), title="EMA", color=color.orange, offset=0, linewidth=2,force_overlay=true)
  104.  
  105. ////////////////////////////////////////////////////////////////////////////////////////
Tags: CE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement