LazyBear

Indicator: Schaff Trend Cycle (STC)

Another new indicator for TV community :)

STC detects up and down trends long before the MACD. It does this by using the same exponential moving averages (EMAs), but adds a cycle component to factor instrument cycle trends. STC gives more accuracy and reliability than the MACD.

More info: www.investopedia.com...-cycle-indicator.asp

Feel free to "Make mine" this chart and use the indicator in your charts. Appreciate any feedback on how effective this is for your instrument (I have tested this only with BTC).



For people trading BTC:
-------------------------------

Try 3/10 or 9/30 for MACD (fastLength/slowLength). They seem to catch the cycles better than the defaults. :)

List of my free indicators: bit.ly/1LQaPK8
List of my indicators at Appstore: blog.tradingview.com/?p=970
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.

Want to use this script on a chart?
//
// @author LazyBear
// If you use modify / use this code, appreciate if you could drop me a note. 
// 
study(title="Schaff Trend Cycle [LazyBear]", shorttitle="STC_LB", overlay=true)
length=input(10)
fastLength=input(23)
slowLength=input(50)
macd(source, fastLength, slowLength) =>
    fastMA = ema(source, fastLength)
    slowMA = ema(source, slowLength)
    macd = fastMA - slowMA
    macd
    

stc(length, fastLength, slowLength) => 
    factor=input(0.5)  
    m = macd(close,fastLength,slowLength)     
    v1 = lowest(m, length)
    v2 = highest(m, length) - v1    
    f1 = (v2 > 0 ? ((m - v1) / v2) * 100 : nz(f1[1])) 
    pf = (na(pf[1]) ? f1 : pf[1] + (factor * (f1 - pf[1]))) 
    v3 = lowest(pf, length) 
    v4 = highest(pf, length) - v3     
    f2 = (v4 > 0 ? ((pf - v3) / v4) * 100 : nz(f2[1])) 
    pff = (na(pff[1]) ? f2 : pff[1] + (factor * (f2 - pff[1])))
    pff

plot(stc(length,fastLength,slowLength),color=red, title="Schaff_TC")
//
// Uncomment the lines below if you want the center region
//
// ul=plot(25)
// ll=plot(75) 
// fill(ul,ll,color=red)