Advertisement
xmd79

OPTIMUM SNIPER V.1

Sep 14th, 2023
1,130
2
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.54 KB | None | 2 0
  1. //@version=5
  2. indicator(" [OPTIMUM SNIPER V.1]", overlay=true, max_labels_count=500)
  3.  
  4.  
  5. // Get user settings
  6. showBuySell = input(true, "Show Buy & Sell", group="BUY & SELL SIGNALS")
  7. sensitivity = input.float(3, "Sensitivity (1-6)", 1, 6, group="BUY & SELL SIGNALS")
  8. percentStop = input.float(1, "Stop Loss % (0 to Disable)", 0, group="BUY & SELL SIGNALS")
  9. offsetSignal = input.float(5, "Signals Offset", 0, group="BUY & SELL SIGNALS")
  10. showRibbon = input(false, "Show Trend Ribbon", group="TREND RIBBON")
  11. smooth1 = input.int(5, "Smoothing 1", 1, group="TREND RIBBON")
  12. smooth2 = input.int(8, "Smoothing 2", 1, group="TREND RIBBON")
  13. showReversal = input(false, "Show Reversals", group="REVERSAL SIGNALS")
  14. showPdHlc = input(false, "Show P.D H/L/C", group="PREVIOUS DAY HIGH LOW CLOSE")
  15. lineColor = input.color(color.yellow, "Line Colors", group="PREVIOUS DAY HIGH LOW CLOSE")
  16. lineWidth = input.int(1, "Width Lines", group="PREVIOUS DAY HIGH LOW CLOSE")
  17. lineStyle = input.string("Solid", "Line Style", ["Solid", "Dashed", "Dotted"])
  18. labelSize = input.string("normal", "Label Text Size", ["small", "normal", "large"])
  19. labelColor = input.color(color.yellow, "Label Text Colors")
  20. showEmas = input(false, "Show EMAs", group="EMA")
  21. srcEma1 = input(close, "Source EMA 1")
  22. lenEma1 = input.int(7, "Length EMA 1", 1)
  23. srcEma2 = input(close, "Source EMA 2")
  24. lenEma2 = input.int(21, "Length EMA 2", 1)
  25. srcEma3 = input(close, "Source EMA 3")
  26. lenEma3 = input.int(144, "Length EMA 3", 1)
  27. showSwing = input(false, "Show Swing Points", group="SWING POINTS")
  28. prdSwing = input.int(10, "Swing Point Period", 2, group="SWING POINTS")
  29. colorPos = input(color.new(color.green, 50), "Positive Swing Color")
  30. colorNeg = input(color.new(color.red, 50), "Negative Swing Color")
  31. showDashboard = input(false, "Show Dashboard", group="TREND DASHBOARD")
  32. locationDashboard = input.string("Middle Right", "Table Location", ["Top Right", "Middle Right", "Bottom Right", "Top Center", "Middle Center", "Bottom Center", "Top Left", "Middle Left", "Bottom Left"], group="TREND DASHBOARD")
  33. tableTextColor = input(color.white, "Table Text Color", group="TREND DASHBOARD")
  34. tableBgColor = input(#2A2A2A, "Table Background Color", group="TREND DASHBOARD")
  35. sizeDashboard = input.string("Normal", "Table Size", ["Large", "Normal", "Small", "Tiny"], group="TREND DASHBOARD")
  36. showRevBands = input.bool(false, "Show Reversal Bands", group="REVERSAL BANDS")
  37. lenRevBands = input.int(30, "Length", group="REVERSAL BANDS")
  38. // Functions
  39. smoothrng(x, t, m) =>
  40. wper = t * 2 - 1
  41. avrng = ta.ema(math.abs(x - x[1]), t)
  42. smoothrng = ta.ema(avrng, wper) * m
  43. rngfilt(x, r) =>
  44. rngfilt = x
  45. rngfilt := x > nz(rngfilt[1]) ? x - r < nz(rngfilt[1]) ? nz(rngfilt[1]) : x - r : x + r > nz(rngfilt[1]) ? nz(rngfilt[1]) : x + r
  46. percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
  47. securityNoRep(sym, res, src) => request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on)
  48. swingPoints(prd) =>
  49. pivHi = ta.pivothigh(prd, prd)
  50. pivLo = ta.pivotlow (prd, prd)
  51. last_pivHi = ta.valuewhen(pivHi, pivHi, 1)
  52. last_pivLo = ta.valuewhen(pivLo, pivLo, 1)
  53. hh = pivHi and pivHi > last_pivHi ? pivHi : na
  54. lh = pivHi and pivHi < last_pivHi ? pivHi : na
  55. hl = pivLo and pivLo > last_pivLo ? pivLo : na
  56. ll = pivLo and pivLo < last_pivLo ? pivLo : na
  57. [hh, lh, hl, ll]
  58. f_chartTfInMinutes() =>
  59. float _resInMinutes = timeframe.multiplier * (
  60. timeframe.isseconds ? 1 :
  61. timeframe.isminutes ? 1. :
  62. timeframe.isdaily ? 60. * 24 :
  63. timeframe.isweekly ? 60. * 24 * 7 :
  64. timeframe.ismonthly ? 60. * 24 * 30.4375 : na)
  65. f_kc(src, len, sensitivity) =>
  66. basis = ta.sma(src, len)
  67. span = ta.atr(len)
  68. [basis + span * sensitivity, basis - span * sensitivity]
  69. wavetrend(src, chlLen, avgLen) =>
  70. esa = ta.ema(src, chlLen)
  71. d = ta.ema(math.abs(src - esa), chlLen)
  72. ci = (src - esa) / (0.015 * d)
  73. wt1 = ta.ema(ci, avgLen)
  74. wt2 = ta.sma(wt1, 3)
  75. [wt1, wt2]
  76. f_top_fractal(src) => src[4] < src[2] and src[3] < src[2] and src[2] > src[1] and src[2] > src[0]
  77. f_bot_fractal(src) => src[4] > src[2] and src[3] > src[2] and src[2] < src[1] and src[2] < src[0]
  78. f_fractalize (src) => f_top_fractal(src) ? 1 : f_bot_fractal(src) ? -1 : 0
  79. f_findDivs(src, topLimit, botLimit) =>
  80. fractalTop = f_fractalize(src) > 0 and src[2] >= topLimit ? src[2] : na
  81. fractalBot = f_fractalize(src) < 0 and src[2] <= botLimit ? src[2] : na
  82. highPrev = ta.valuewhen(fractalTop, src[2], 0)[2]
  83. highPrice = ta.valuewhen(fractalTop, high[2], 0)[2]
  84. lowPrev = ta.valuewhen(fractalBot, src[2], 0)[2]
  85. lowPrice = ta.valuewhen(fractalBot, low[2], 0)[2]
  86. bearSignal = fractalTop and high[2] > highPrice and src[2] < highPrev
  87. bullSignal = fractalBot and low[2] < lowPrice and src[2] > lowPrev
  88. [bearSignal, bullSignal]
  89. // Get components
  90. source = close
  91. smrng1 = smoothrng(source, 27, 1.5)
  92. smrng2 = smoothrng(source, 55, sensitivity)
  93. smrng = (smrng1 + smrng2) / 2
  94. filt = rngfilt(source, smrng)
  95. up = 0.0, up := filt > filt[1] ? nz(up[1]) + 1 : filt < filt[1] ? 0 : nz(up[1])
  96. dn = 0.0, dn := filt < filt[1] ? nz(dn[1]) + 1 : filt > filt[1] ? 0 : nz(dn[1])
  97. bullCond = bool(na), bullCond := source > filt and source > source[1] and up > 0 or source > filt and source < source[1] and up > 0
  98. bearCond = bool(na), bearCond := source < filt and source < source[1] and dn > 0 or source < filt and source > source[1] and dn > 0
  99. lastCond = 0, lastCond := bullCond ? 1 : bearCond ? -1 : lastCond[1]
  100. bull = bullCond and lastCond[1] == -1
  101. bear = bearCond and lastCond[1] == 1
  102. countBull = ta.barssince(bull)
  103. countBear = ta.barssince(bear)
  104. trigger = nz(countBull, bar_index) < nz(countBear, bar_index) ? 1 : 0
  105. ribbon1 = ta.sma(close, smooth1)
  106. ribbon2 = ta.sma(close, smooth2)
  107. rsi = ta.rsi(close, 21)
  108. rsiOb = rsi > 70 and rsi > ta.ema(rsi, 10)
  109. rsiOs = rsi < 30 and rsi < ta.ema(rsi, 10)
  110. dHigh = securityNoRep(syminfo.tickerid, "D", high [1])
  111. dLow = securityNoRep(syminfo.tickerid, "D", low [1])
  112. dClose = securityNoRep(syminfo.tickerid, "D", close[1])
  113. ema1 = ta.ema(srcEma1, lenEma1)
  114. ema2 = ta.ema(srcEma2, lenEma2)
  115. ema3 = ta.ema(srcEma3, lenEma3)
  116. [hh, lh, hl, ll] = swingPoints(prdSwing)
  117. ema = ta.ema(close, 144)
  118. emaBull = close > ema
  119. equal_tf(res) => str.tonumber(res) == f_chartTfInMinutes() and not timeframe.isseconds
  120. higher_tf(res) => str.tonumber(res) > f_chartTfInMinutes() or timeframe.isseconds
  121. too_small_tf(res) => (timeframe.isweekly and res=="1") or (timeframe.ismonthly and str.tonumber(res) < 10)
  122. securityNoRep1(sym, res, src) =>
  123. bool bull_ = na
  124. bull_ := equal_tf(res) ? src : bull_
  125. bull_ := higher_tf(res) ? request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on) : bull_
  126. bull_array = request.security_lower_tf(syminfo.tickerid, higher_tf(res) ? str.tostring(f_chartTfInMinutes()) + (timeframe.isseconds ? "S" : "") : too_small_tf(res) ? (timeframe.isweekly ? "3" : "10") : res, src)
  127. if array.size(bull_array) > 1 and not equal_tf(res) and not higher_tf(res)
  128. bull_ := array.pop(bull_array)
  129. array.clear(bull_array)
  130. bull_
  131. TF1Bull = securityNoRep1(syminfo.tickerid, "1" , emaBull)
  132. TF3Bull = securityNoRep1(syminfo.tickerid, "3" , emaBull)
  133. TF5Bull = securityNoRep1(syminfo.tickerid, "5" , emaBull)
  134. TF15Bull = securityNoRep1(syminfo.tickerid, "15" , emaBull)
  135. TF30Bull = securityNoRep1(syminfo.tickerid, "30" , emaBull)
  136. TF60Bull = securityNoRep1(syminfo.tickerid, "60" , emaBull)
  137. TF120Bull = securityNoRep1(syminfo.tickerid, "120" , emaBull)
  138. TF240Bull = securityNoRep1(syminfo.tickerid, "240" , emaBull)
  139. TF480Bull = securityNoRep1(syminfo.tickerid, "480" , emaBull)
  140. TFDBull = securityNoRep1(syminfo.tickerid, "1440", emaBull)
  141. [upperKC1, lowerKC1] = f_kc(close, lenRevBands, 3)
  142. [upperKC2, lowerKC2] = f_kc(close, lenRevBands, 4)
  143. [upperKC3, lowerKC3] = f_kc(close, lenRevBands, 5)
  144. [upperKC4, lowerKC4] = f_kc(close, lenRevBands, 6)
  145. [wt1, wt2] = wavetrend(hlc3, 9, 12)
  146. [wtDivBear1, wtDivBull1] = f_findDivs(wt2, 15, -40)
  147. [wtDivBear2, wtDivBull2] = f_findDivs(wt2, 45, -65)
  148. wtDivBull = wtDivBull1 or wtDivBull2
  149. wtDivBear = wtDivBear1 or wtDivBear2
  150. // Colors
  151. cyan = #00DBFF, cyan30 = color.new(cyan, 70)
  152. pink = #E91E63, pink30 = color.new(pink, 70)
  153. red = #FF5252, red30 = color.new(red , 70)
  154. // Plot
  155. off = percWidth(300, offsetSignal)
  156. plotshape(showBuySell and bull ? low - off : na, "Buy Label" , shape.triangleup , location.absolute, cyan, 0, "Buy" , color.white, size=size.normal)
  157. plotshape(showBuySell and bear ? high + off : na, "Sell Label", shape.triangledown, location.absolute, pink, 0, "Sell", color.white, size=size.normal)
  158. plotshape(ta.crossover(wt1, wt2) and wt2 <= -53, "Mild Buy" , shape.xcross, location.belowbar, cyan, size=size.tiny)
  159. plotshape(ta.crossunder(wt1, wt2) and wt2 >= 53, "Mild Sell", shape.xcross, location.abovebar, pink, size=size.tiny)
  160. plotshape(wtDivBull, "Divergence Buy ", shape.triangleup , location.belowbar, cyan, size=size.tiny)
  161. plotshape(wtDivBear, "Divergence Sell", shape.triangledown, location.abovebar, pink, size=size.tiny)
  162.  
  163. plotshape(showReversal and rsiOs, "Reversal Buy" , shape.diamond, location.belowbar, cyan30, size=size.tiny)
  164. plotshape(showReversal and rsiOb, "Reversal Sell", shape.diamond, location.abovebar, pink30, size=size.tiny)
  165. lStyle = lineStyle == "Solid" ? line.style_solid : lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
  166. lSize = labelSize == "small" ? size.small : labelSize == "normal" ? size.normal : size.large
  167. dHighLine = showPdHlc ? line.new(bar_index, dHigh, bar_index + 1, dHigh , xloc.bar_index, extend.both, lineColor, lStyle, lineWidth) : na, line.delete(dHighLine[1])
  168. dLowLine = showPdHlc ? line.new(bar_index, dLow , bar_index + 1, dLow , xloc.bar_index, extend.both, lineColor, lStyle, lineWidth) : na, line.delete(dLowLine[1])
  169. dCloseLine = showPdHlc ? line.new(bar_index, dClose, bar_index + 1, dClose, xloc.bar_index, extend.both, lineColor, lStyle, lineWidth) : na, line.delete(dCloseLine[1])
  170. dHighLabel = showPdHlc ? label.new(bar_index + 100, dHigh , "P.D.H", xloc.bar_index, yloc.price, #000000, label.style_none, labelColor, lSize) : na, label.delete(dHighLabel[1])
  171. dLowLabel = showPdHlc ? label.new(bar_index + 100, dLow , "P.D.L", xloc.bar_index, yloc.price, #000000, label.style_none, labelColor, lSize) : na, label.delete(dLowLabel[1])
  172. dCloseLabel = showPdHlc ? label.new(bar_index + 100, dClose, "P.D.C", xloc.bar_index, yloc.price, #000000, label.style_none, labelColor, lSize) : na, label.delete(dCloseLabel[1])
  173. plot(showEmas ? ema1 : na, "EMA 1", color.green , 2)
  174. plot(showEmas ? ema2 : na, "EMA 2", color.purple, 2)
  175. plot(showEmas ? ema3 : na, "EMA 3", color.yellow, 2)
  176. plotshape(showSwing ? hh : na, "", shape.triangledown, location.abovebar, color.new(color.green, 50), -prdSwing, "HH", colorPos, false)
  177. plotshape(showSwing ? hl : na, "", shape.triangleup , location.belowbar, color.new(color.green, 50), -prdSwing, "HL", colorPos, false)
  178. plotshape(showSwing ? lh : na, "", shape.triangledown, location.abovebar, color.new(color.red , 50), -prdSwing, "LH", colorNeg, false)
  179. plotshape(showSwing ? ll : na, "", shape.triangleup , location.belowbar, color.new(color.red , 50), -prdSwing, "LL", colorNeg, false)
  180. srcStop = close
  181. atrBand = srcStop * (percentStop / 120)
  182. atrStop = trigger ? srcStop - atrBand : srcStop + atrBand
  183. lastTrade(src) => ta.valuewhen(bull or bear, src, 0)
  184. entry_y = lastTrade(srcStop)
  185. stop_y = lastTrade(atrStop)
  186. tp1_y = (entry_y - lastTrade(atrStop)) * 1 + entry_y
  187. tp2_y = (entry_y - lastTrade(atrStop)) * 2 + entry_y
  188. tp3_y = (entry_y - lastTrade(atrStop)) * 3 + entry_y
  189. labelTpSl(y, txt, color) =>
  190. label labelTpSl = percentStop != 0 ? label.new(bar_index + 1, y, txt, xloc.bar_index, yloc.price, color, label.style_label_left, color.white, size.normal) : na
  191. label.delete(labelTpSl[1])
  192. labelTpSl(entry_y, "Entry: " + str.tostring(math.round_to_mintick(entry_y)), color.gray)
  193. labelTpSl(stop_y , "Stop Loss: " + str.tostring(math.round_to_mintick(stop_y)), color.red)
  194. labelTpSl(tp1_y, "Take Profit 1: " + str.tostring(math.round_to_mintick(tp1_y)), color.green)
  195. labelTpSl(tp2_y, "Take Profit 2: " + str.tostring(math.round_to_mintick(tp2_y)), color.green)
  196. labelTpSl(tp3_y, "Take Profit 3: " + str.tostring(math.round_to_mintick(tp3_y)), color.green)
  197. lineTpSl(y, color) =>
  198. line lineTpSl = percentStop != 0 ? line.new(bar_index - (trigger ? countBull : countBear) + 4, y, bar_index + 1, y, xloc.bar_index, extend.none, color, line.style_solid) : na
  199. line.delete(lineTpSl[1])
  200. lineTpSl(entry_y, color.gray)
  201. lineTpSl(stop_y, color.red)
  202. lineTpSl(tp1_y, color.green)
  203. lineTpSl(tp2_y, color.green)
  204. lineTpSl(tp3_y, color.green)
  205. var dashboard_loc = locationDashboard == "Top Right" ? position.top_right : locationDashboard == "Middle Right" ? position.middle_right : locationDashboard == "Bottom Right" ? position.bottom_right : locationDashboard == "Top Center" ? position.top_center : locationDashboard == "Middle Center" ? position.middle_center : locationDashboard == "Bottom Center" ? position.bottom_center : locationDashboard == "Top Left" ? position.top_left : locationDashboard == "Middle Left" ? position.middle_left : position.bottom_left
  206. var dashboard_size = sizeDashboard == "Large" ? size.large : sizeDashboard == "Normal" ? size.normal : sizeDashboard == "Small" ? size.small : size.tiny
  207. var dashboard = showDashboard ? table.new(dashboard_loc, 2, 15, tableBgColor, #000000, 2, tableBgColor, 1) : na
  208. dashboard_cell(column, row, txt, signal=false) => table.cell(dashboard, column, row, txt, 0, 0, signal ? #000000 : tableTextColor, text_size=dashboard_size)
  209. dashboard_cell_bg(column, row, col) => table.cell_set_bgcolor(dashboard, column, row, col)
  210. if barstate.islast and showDashboard
  211. dashboard_cell(0, 0 , "Timeframe")
  212. dashboard_cell(0, 1 , "Current Position")
  213. dashboard_cell(0, 2 , "Current Trend")
  214. dashboard_cell(0, 3 , "Volume")
  215. dashboard_cell(0, 4 , "Timeframe")
  216. dashboard_cell(0, 5 , "1 min:")
  217. dashboard_cell(0, 6 , "3 min:")
  218. dashboard_cell(0, 7 , "5 min:")
  219. dashboard_cell(0, 8 , "15 min:")
  220. dashboard_cell(0, 9 , "30 min:")
  221. dashboard_cell(0, 10, "1 H:")
  222. dashboard_cell(0, 11, "2 H:")
  223. dashboard_cell(0, 12, "4 H:")
  224. dashboard_cell(0, 13, "8 H:")
  225. dashboard_cell(0, 14, "Daily:")
  226. dashboard_cell(1, 0 , "Trend")
  227. dashboard_cell(1, 1 , trigger ? "Buy" : "Sell", true), dashboard_cell_bg(1, 1, trigger ? color.green : color.red)
  228. dashboard_cell(1, 2 , emaBull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 2, emaBull ? color.green : color.red)
  229. dashboard_cell(1, 3 , str.tostring(volume))
  230. dashboard_cell(1, 4 , "Trends")
  231. dashboard_cell(1, 5 , TF1Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 5 , TF1Bull ? color.green : color.red)
  232. dashboard_cell(1, 6 , TF3Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 6 , TF3Bull ? color.green : color.red)
  233. dashboard_cell(1, 7 , TF5Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 7 , TF5Bull ? color.green : color.red)
  234. dashboard_cell(1, 8 , TF15Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 8 , TF15Bull ? color.green : color.red)
  235. dashboard_cell(1, 9 , TF30Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 9 , TF30Bull ? color.green : color.red)
  236. dashboard_cell(1, 10, TF60Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 10, TF60Bull ? color.green : color.red)
  237. dashboard_cell(1, 11, TF120Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 11, TF120Bull ? color.green : color.red)
  238. dashboard_cell(1, 12, TF240Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 12, TF240Bull ? color.green : color.red)
  239. dashboard_cell(1, 13, TF480Bull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 13, TF480Bull ? color.green : color.red)
  240. dashboard_cell(1, 14, TFDBull ? "Bullish" : "Bearish", true), dashboard_cell_bg(1, 14, TFDBull ? color.green : color.red)
  241. plot(showRevBands ? upperKC1 : na, "Rev.Zone Upper 1", red30)
  242. plot(showRevBands ? upperKC2 : na, "Rev.Zone Upper 2", red30)
  243. plot(showRevBands ? upperKC3 : na, "Rev.Zone Upper 3", red30)
  244. plot(showRevBands ? upperKC4 : na, "Rev.Zone Upper 4", red30)
  245. plot(showRevBands ? lowerKC4 : na, "Rev.Zone Lower 4", cyan30)
  246. plot(showRevBands ? lowerKC3 : na, "Rev.Zone Lower 3", cyan30)
  247. plot(showRevBands ? lowerKC2 : na, "Rev.Zone Lower 2", cyan30)
  248. plot(showRevBands ? lowerKC1 : na, "Rev.Zone Lower 1", cyan30)
  249. fill(plot(showRibbon ? ribbon1 : na, "", na, editable=false), plot(showRibbon ? ribbon2 : na, "", na, editable=false), ribbon1 > ribbon2 ? cyan30 : pink30, "Ribbon Fill Color")
  250. // Alerts
  251. alert01 = ta.crossover(ribbon1, ribbon2)
  252. alert02 = bull
  253. alert03 = wtDivBull
  254. alert04 = wtDivBear
  255. alert05 = bull or bear
  256. alert06 = ta.crossover(wt1, wt2) and wt2 <= -53
  257. alert07 = ta.crossunder(wt1, wt2) and wt2 >= 53
  258. alert08 = ta.crossunder(ribbon1, ribbon2)
  259. alert09 = rsiOb or rsiOs
  260. alert10 = bear
  261. alert11 = ta.cross(ribbon1, ribbon2)
  262. alerts(sym) =>
  263. if alert02 or alert03 or alert04 or alert06 or alert07 or alert10
  264. alert_text = alert02 ? "Buy Signal EzAlgo" : alert03 ? "Strong Buy Signal EzAlgo" : alert04 ? "Strong Sell Signal EzAlgo" : alert06 ? "Mild Buy Signal EzAlgo" : alert07 ? "Mild Sell Signal EzAlgo" : "Sell Signal EzAlgo"
  265. alert(alert_text, alert.freq_once_per_bar_close)
  266. alerts(syminfo.tickerid)
  267. alertcondition(alert01, "Blue Trend Ribbon Alert", "Blue Trend Ribbon, TimeFrame={{interval}}")
  268. alertcondition(alert02, "Buy Signal", "Buy Signal EzAlgo")
  269. alertcondition(alert03, "Divergence Buy Alert", "Strong Buy Signal EzAlgo, TimeFrame={{interval}}")
  270. alertcondition(alert04, "Divergence Sell Alert", "Strong Sell Signal EzAlgo, TimeFrame={{interval}}")
  271. alertcondition(alert05, "Either Buy or Sell Signal", "EzAlgo Signal")
  272. alertcondition(alert06, "Mild Buy Alert", "Mild Buy Signal EzAlgo, TimeFrame={{interval}}")
  273. alertcondition(alert07, "Mild Sell Alert", "Mild Sell Signal EzAlgo, TimeFrame={{interval}}")
  274. alertcondition(alert08, "Red Trend Ribbon Alert", "Red Trend Ribbon, TimeFrame={{interval}}")
  275. alertcondition(alert09, "Reversal Signal", "Reversal Signal")
  276. alertcondition(alert10, "Sell Signal", "Sell Signal EzAlgo")
  277. alertcondition(alert11, "Trend Ribbon Color Change Alert", "Trend Ribbon Color Change, TimeFrame={{interval}}")
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement