xmd79

True Strength Index

Oct 3rd, 2021
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. //@version=4
  2. // Copyright (c) 2021-present, Alex Orekhov (everget)
  3. study("True Strength Index", shorttitle="TSI")
  4.  
  5. longLength = input(title="Long Length", type=input.integer, defval=25)
  6. shortLength = input(title="Short Length", type=input.integer, defval=13)
  7. signalLength = input(title="Signal Length", type=input.integer, defval=13, minval=1)
  8. src = input(title="Source", type=input.source, defval=close)
  9.  
  10. obLevel = input(title="Overbought Level", type=input.integer, defval=40)
  11. osLevel = input(title="Oversold Level", type=input.integer, defval=-40)
  12. maxLevel = input(title="Max Level", type=input.integer, defval=75)
  13. minLevel = input(title="Min Level", type=input.integer, defval=-75)
  14. showHistogram = input(title="Show Histogram ?", type=input.bool, defval=false)
  15. highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=input.bool, defval=true)
  16. highlightCrossovers = input(title="Highlight TSI/Signal Crossovers ?", type=input.bool, defval=true)
  17. highlightZeroCrossovers = input(title="Highlight Zero Line Crossovers ?", type=input.bool, defval=true)
  18. applyRibbonFilling = input(title="Apply Ribbon Filling ?", type=input.bool, defval=true)
  19.  
  20. mom = change(src)
  21. numerator = ema(ema(mom, longLength), shortLength)
  22. denominator = ema(ema(abs(mom), longLength), shortLength)
  23. tsi = 100 * numerator / denominator
  24. signal = ema(tsi, signalLength)
  25.  
  26. trendColor = tsi > signal ? #0ebb23 : color.red
  27. tsiColor = applyRibbonFilling ? trendColor : #ff3e7d
  28. signalColor = applyRibbonFilling ? trendColor : #3c78d8
  29.  
  30. tsiPlot = plot(tsi, title="TSI", color=tsiColor, transp=0)
  31. signalPlot = plot(signal, title="Signal", color=signalColor, transp=0)
  32.  
  33. hist = tsi - signal
  34. histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350
  35. plot(showHistogram ? hist : na, title="Histogram", style=plot.style_columns, color=histColor, transp=0)
  36.  
  37. var color noneColor = color.new(color.white, 100)
  38.  
  39. maxLevelPlot = hline(maxLevel, title="Max Level", linestyle=hline.style_dotted, color=noneColor)
  40. obLevelPlot = hline(obLevel, title="Overbought Level", linestyle=hline.style_dotted, color=#00796b)
  41. hline(0, title="Zero Level", linestyle=hline.style_dotted, color=#989898)
  42. osLevelPlot = hline(osLevel, title="Oversold Level", linestyle=hline.style_dotted, color=#f57f17)
  43. minLevelPlot = hline(minLevel, title="Min Level", linestyle=hline.style_dotted, color=noneColor)
  44. fill(obLevelPlot, osLevelPlot, title="Middle Zone", color=color.purple, transp=95)
  45.  
  46. obFillColor = tsi > obLevel and highlightBreakouts ? color.green : noneColor
  47. osFillColor = tsi < osLevel and highlightBreakouts ? color.red : noneColor
  48.  
  49. fill(maxLevelPlot, obLevelPlot, title="Overbought Level Breakout", color=obFillColor, transp=85)
  50. fill(minLevelPlot, osLevelPlot, title="Oversold Level Breakout", color=osFillColor, transp=85)
  51.  
  52. fillColor = applyRibbonFilling ? trendColor : noneColor
  53. fill(tsiPlot, signalPlot, title="Ribbon", color=fillColor, transp=70)
  54.  
  55. zeroCrossBgColor = highlightZeroCrossovers ? (tsi > 0 ? color.green : color.red) : noneColor
  56. bgcolor(zeroCrossBgColor, title="Zero Line Crossover Background", transp=90)
  57.  
  58. plotshape(highlightCrossovers and crossover(tsi, signal) ? tsi : na, title="TSI/Signal Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
  59. plotshape(highlightCrossovers and crossunder(tsi, signal) ? tsi : na, title="TSI/Signal Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
  60.  
Advertisement
Add Comment
Please, Sign In to add comment