xmd79

Schaff Trend Cycle

Jun 15th, 2022
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. //@version=4
  2. // Copiright (c) 2022 Alex Sobrino
  3. // Schaff Trend Cycle script may be freely distributed under the MIT license.
  4. study("Schaff Trend Cycle", shorttitle="STC")
  5.  
  6. fastLength = input(title="MACD Fast Length", type=input.integer, defval=23)
  7. slowLength = input(title="MACD Slow Length", type=input.integer, defval=50)
  8. cycleLength = input(title="Cycle Length", type=input.integer, defval=10)
  9. d1Length = input(title="1st %D Length", type=input.integer, defval=3)
  10. d2Length = input(title="2nd %D Length", type=input.integer, defval=3)
  11. src = input(title="Source", type=input.source, defval=close)
  12. upper = input(title="Upper Band", type=input.integer, defval=75)
  13. lower = input(title="Lower Band", type=input.integer, defval=25)
  14. highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true)
  15.  
  16. macd = ema(src, fastLength) - ema(src, slowLength)
  17. k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
  18. d = ema(k, d1Length)
  19. kd = nz(fixnan(stoch(d, d, d, cycleLength)))
  20. stc = ema(kd, d2Length)
  21. stc := max(min(stc, 100), 0)
  22.  
  23. stcColor1 = stc > stc[1] ? color.green : color.red
  24. stcColor2 = stc > upper ? color.green : stc <= lower ? color.red : color.orange
  25.  
  26. stcColor = highlightBreakouts ? stcColor2 : stcColor1
  27. stcPlot = plot(stc, title="STC", color=stcColor, transp=0)
  28.  
  29. upperLevel = plot(upper, title="Upper", color=color.gray)
  30. hline(50, title="Middle", linestyle=hline.style_dotted)
  31. lowerLevel = plot(lower, title="Lower", color=color.gray)
  32.  
  33. fill(upperLevel, lowerLevel, title="Middle Zone", color=#f9cb9c, transp=90)
  34.  
  35. upperFillColor = stc > upper and highlightBreakouts ? color.green : na
  36. lowerFillColor = stc < lower and highlightBreakouts ? color.red : na
  37.  
  38. fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
  39. fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)
  40.  
  41. buySignal = crossover(stc, lower)
  42. sellSignal = crossunder(stc, upper)
  43. upperCrossover = crossover(stc, upper)
  44. upperCrossunder = crossunder(stc, upper)
  45. lowerCrossover = crossover(stc, lower)
  46. lowerCrossunder = crossunder(stc, lower)
  47.  
  48. plotshape(upperCrossunder ? upper : na, title="Sell Signal", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
  49. plotshape(lowerCrossover ? lower : na, title="Buy Signal", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
  50.  
  51. alertcondition(buySignal, title="Alert: Buy", message="STC: Buy!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  52. alertcondition(sellSignal, title="Alert: Sell", message="STC: Sell!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  53. alertcondition(upperCrossover, title="Alert: Upper Band Crossover", message="STC: Upper Band Crossover!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  54. alertcondition(upperCrossunder, title="Alert: Upper Band Crossunder", message="STC: Upper Band Crossunder!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  55. alertcondition(lowerCrossover, title="Alert: Lower Band Crossover", message="STC: Lower Band Crossover!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  56. alertcondition(lowerCrossunder, title="Alert: Lower Band Crossunder", message="STC: Lower Band Crossunder!\nSymbol: {{exchange}}:{{ticker}}\nPrice: {{close}}")
  57.  
Advertisement
Add Comment
Please, Sign In to add comment