TradingView
LazyBear
Apr 2, 2014 8:38 PM

Indicator: Schaff Trend Cycle (STC) 

Description

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: investopedia.com/articles/forex/10/schaff-trend-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).

[Added 04/02/14 - from comments]

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

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


You can also use this indicator in its own pane (by unmerging down), as shown above.

If you do that, I suggest enabling the center region. Open the source code and uncomment these lines. Press Save and voila!

//
// ul=plot(25)
// ll=plot(75)
// fill(ul,ll,color=red)
//
CoinEx
It looks like there was a change to the way the code works.

This indicator gives an error:
line 33:3 mismatched input 'ul' expecting LEND
LazyBear
I just tried this code, it worked.

Did you make any changes?
CoinEx
I thought that might have been a possibility. So what I did is I took a fresh copy from above and inserted it a few minutes ago. The error appears when you uncomment the last few lines and prevents the indicator from functioning.

In other words, it is a carbon copy of the original.
LazyBear
uncomment last few lines?

Can you post the exact src code that is giving u this issue?
CoinEx
//
// @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(open)
ll = plot(75)
fill(uline, ll, color=red)

CoinEx
the last 3 lines seems to cause the problem.
Note: I changed the plot(25) to open but that was just a debugging effort. I forgot to revert it before copy and pasting the code.
CoinEx
I figured out the problem. It seems that leaving a space at the beginning of line 33 causes the error.
LazyBear
great! :)
cristian.d
I did this but it gives me error. Could you please post the script with the detached panel please? Many thanks.
Thanks LazyBear for this!!!
More