Schaff Trend Cycle (STC)

Parameters: fast_period = 23 (10–50) slow_period = 50 (20–100) cycle_period = 10 (5–20)

Overview

The Schaff Trend Cycle represents a sophisticated evolution in technical analysis, addressing the specific limitations of its component indicators. While MACD provides reliable trend signals but with significant lag, and stochastics generate early signals but with many false positives, the STC combines their strengths through a unique calculation process. The indicator essentially applies "Stochastic over Stochastic over MACD," first calculating MACD values from exponential moving averages, then applying stochastic calculations twice to create an oscillator that ranges from 0 to 100.

Originally developed for fast-moving currency markets, the STC has proven effective across all markets and timeframes. The double application of stochastic smoothing to MACD values creates an indicator that responds faster than MACD to trend changes while maintaining better reliability than standard oscillators. With trigger levels typically set at 25 and 75, the STC provides clear overbought/oversold signals while its position relative to the 50 level indicates the overall trend direction, making it one of the most versatile indicators for both trend following and momentum trading.

Interpretation & Trading Signals

Primary Trading Signals:

  • Buy Signal: STC crosses above 25 (end of oversold)
  • Sell Signal: STC crosses below 75 (end of overbought)
  • Trend Direction: Above 50 = bullish, below 50 = bearish
  • Signal Confirmation: Wait for candle close above trigger high

Advanced Techniques:

  • Line Turns: STC turning at extremes signals reversals
  • Divergence: Price/STC divergences indicate weakening trends
  • Flat Lines: Extended flat periods at 0 or 100 = strong trend
  • Multiple Timeframes: Confirm signals on higher timeframes

Best Practices:

  • Trend Markets: Most reliable in trending conditions
  • Volume Confirmation: Combine with volume indicators
  • Avoid Whipsaws: Can linger at extremes - use filters
  • Faster than MACD: Generates signals 1-2 bars earlier

Example Usage

Code examples will be available once the Rust implementation is complete.

Performance Analysis

Related Indicators