Schaff Trend Cycle

The Schaff Trend Cycle (STC) is a faster and more responsive trend indicator than traditional tools like the MACD. Developed by Doug Schaff, STC combines MACD and the stochastic oscillator to detect both the direction and timing of market trends with reduced lag.

Unlike classic momentum indicators that often react slowly to trend changes, STC uses a cyclical approach to identify early entry and exit signals — making it especially useful in fast-moving markets like crypto and forex.

How to use the Schaff Trend Cycle

  • STC Rising Above 25–30: May signal the beginning of a bullish trend.
  • STC Falling Below 70–75: May suggest a bearish trend is starting.
  • Overbought/Oversold Zones: While STC ranges from 0 to 100 like the RSI, its emphasis is more on the cycle rather than fixed thresholds — watch for reversals and crossovers instead.

STC is particularly effective for early detection of trend shifts, making it ideal for dynamic markets with frequent directional changes.

Customize the STC

You can fine-tune the Schaff Trend Cycle (STC) to better fit your trading strategy by adjusting its optional parameters. The fastLength and slowLength inputs (default: 23 and 50) define the short- and long-term EMAs used in the MACD calculation, influencing the base trend signal’s speed and smoothness. The cycleLength (default: 10) determines how far back the stochastic calculation looks when applying the cyclical smoothing logic, impacting the responsiveness of trend detection. Additionally, d1Length and d2Length (both default: 3) control the two levels of %D smoothing in the stochastic component — increasing these values smooths out short-term fluctuations, while lower values make the indicator more reactive. Together, these parameters give you granular control over the STC’s sensitivity and precision in identifying trend cycles.

Get STC values via API

We provide API access to the STC values for all of the most popular assets like stocks, crypto (try one of the popular exchanges like Binance) and forex, on all commonly used timeframes – from the weekly and daily all the way down to one minute intervals. You can also calculate the values on your own data using our manual method.

Get started for Free

The best way to access STC is with our Pro and Expert plans.

Test drive TAAPI.IO risk-free with our 7-day free trial on all paid plans! We’re confident you’ll be hooked for the long haul!

  • Sale!

    Pro

    From: 14.99 / month with a 7-day free trialMost popular

    • All indicators
    • 150.000 calls / day
    • US Stocks – real-time and historical
    • Indexes (SPY, QQQ, DJIA)
    • Crypto data real-time and historical
    • 3 symbols per API request
    • Historical data 300 candles back using results
    • Priority support

    7-day Free Trial

    Select options
  • Sale!

    Expert

    From: 29.99 / month

    • All indicators
    • 400.000 calls / day
    • US Stocks – real-time and historical
    • Indexes (SPY, QQQ, DJIA)
    • Crypto data real-time and historical
    • 10 symbols per API request
    • Historical data 2000 candles back using results
    • Priority support
    Select options

Get started with the stc

Simply make an HTTPS [GET] request or call in your browser:

			[GET] https://api.taapi.io/stc?secret=MY_SECRET&exchange=binance&symbol=BTC/USDT&interval=1h
		

API response

The stc endpoint returns a JSON response like this:

			{
	"value": 92.21,
	"trend": "bullish"
}
		
Example response from TAAPI.IO when querying stc endpoint.

API parameters

secret
Required String
The secret which is emailed to you when you request an API key.
exchange
Required String
The exchange you want to calculate the indicator from: binance, binancefutures or one of our supported exchanges. For other crypto / stock exchanges, please refer to our Client or Manual integration methods.
symbol
Required String
Symbol names are always uppercase, with the coin separated by a forward slash and the market: COIN/MARKET. For example: BTC/USDT Bitcoin to Tether, or LTC/BTC Litecoin to Bitcoin...
interval
Required String
Interval or time frame: We support the following time frames: 1m, 5m, 15m, 30m, 1h, 2h, 4h, 12h, 1d, 1w. So if you're interested in values on hourly candles, use interval=1h, for daily values use interval=1d, etc.
backtrack
Optional Integer
The backtrack parameter removes candles from the data set and calculates the stc value X amount of candles back. So, if you are fetching the stc on the hourly and you want to know what the stc was 5 hours ago, set backtrack=5. The default is 0.
chart
Optional String
The chart parameter accepts one of two values: candles or heikinashi. candles is the default, but if you set this to heikinashi, the indicator values will be calculated using Heikin Ashi candles. Note: Pro & Expert Plans only.
addResultTimestamp
Optional Boolean
true or false. Defaults to false. By setting to true the API will return a timestamp with every result (real-time and backtracked) to which candle the value corresponds. This is especially helpful when requesting a series of historical values using the results parameter.
fromTimestamp
New Optional String
The start of the time range in Unix epoch time. For example: 1685577600
toTimestamp
New Optional String
The end of the time range in Unix epoch time. For example: 1731456000 If you only use fromTimestamp, the API will return all results from that time until present.
gaps
Optional Boolean
true or false. Defaults to true. By setting to false, the API will ensure that there are no candles missing. This often happens on lower timeframes in thin markets. Gaps will be filled by a new candle with 0 volume, and OHLC set the the close price of the latest candle with volume.
results
New Optional String
number or max. Use this parameter to access historical values on the past X candles until the most recent candle. Use max to return all available historical values. Returns an array with the oldest value on top and most recent value returned the last.
fastLength
Optional Integer

Default: 23

slowLength
Optional Integer

Default: 50

cycleLength
Optional Integer

Default: 10

d1Length
Optional Integer

Default: 3

d2Length
Optional Integer

Default: 3

More examples

Let's say you want to know the stc value on the last closed candle on the 30m timeframe. You are not interest in the real-time value, so you use the backtrack=1 optional parameter to go back 1 candle in history to the last closed candle.

				[GET] https://api.taapi.io/stc?secret=MY_SECRET&exchange=binance&symbol=BTC/USDT&interval=30m&backtrack=1
			
Get stc values on each of the past X candles in one call

Let's say you want to know what the stc daily value was each day for the previous 10 days. You can get this returned by our API easily and efficiently in one call using the results=10 parameter:

				[GET] https://api.taapi.io/stc?secret=MY_SECRET&exchange=binance&symbol=BTC/USDT&interval=1d&results=10
			

Looking for even more integration examples in different languages like NodeJS, PHP, Python, Curl or Ruby? Continue to [GET] REST - Direct documentation.