Opens in a new tab
Schaff Trend Cycle Indicator MT4

Schaff Trend Cycle Indicator MT4

If you have ever felt like MACD signals arrive a bar or two too late, the Schaff Trend Cycle was built to close that gap. This free MT4 version — a straightforward conversion of the original FostarFX release — plots a single oscillating line in its own sub-window and can be downloaded and dropped into…

Download the Schaff Trend Cycle Indicator MT4

If you have ever felt like MACD signals arrive a bar or two too late, the Schaff Trend Cycle was built to close that gap. This free MT4 version — a straightforward conversion of the original FostarFX release — plots a single oscillating line in its own sub-window and can be downloaded and dropped into your Indicators folder in under a minute.

What Is the Schaff Trend Cycle Indicator?

The Schaff Trend Cycle (STC) is a cycle-corrected oscillator. Instead of just smoothing price like a moving average or measuring pure momentum like RSI, it takes a MACD-style value and re-normalizes it against its own recent high/low range, then applies a final exponential smoothing pass. The result is an oscillator that reacts to trend changes faster than a standard MACD while still filtering out a lot of the whip noise you get from raw momentum indicators.

In this build, the calculation runs in two stages. First it builds a MACD-like differential by subtracting a long EMA of the typical price from a short EMA of the typical price (using the MAShort and MALong periods). Second, it takes that differential and calculates where it sits between its own highest and lowest values over the last Cycle readings — a stochastic-style normalization that forces the value into roughly a 0–100 range. That normalized value is then smoothed with an exponential moving average whose speed is derived from the Cycle input. Only the final smoothed line is plotted; the raw normalized value is calculated internally but never drawn to the chart.

The indicator window is scaled from -10 to 110, giving the plotted line some breathing room above 100 and below 0 rather than clipping at the edges.

Key Features

  • Single-line oscillator plotted in a separate window, scaled roughly 0–100
  • Built from two EMAs of the typical price (MAShort and MALong), not raw close price
  • Stochastic-style re-normalization of the MACD differential over a configurable Cycle length
  • Final exponential smoothing pass for a cleaner, less jagged line than a raw MACD histogram
  • Adjustable recalculation depth via CountBars for controlling how much history is processed

How to Use It

Download the file and place Schaff Trend Cycle.mq4 in your MetaTrader 4 MQL4/Indicators folder, then restart MT4 or refresh the Navigator panel. Drag the indicator onto any chart; it will open in its own window beneath the price chart.

Because the line is bound approximately between 0 and 100, most traders treat readings above roughly 75 as an overbought/extended-up condition and readings below roughly 25 as an oversold/extended-down condition — the same convention used with the original Schaff Trend Cycle formula. Note that this version does not draw those 25/75 levels automatically; you would need to add horizontal lines manually if you want a visual reference.

The two most common ways traders read this line are: (1) direction changes — when the line turns up from a low reading or turns down from a high reading, it is often read as an early trend-shift signal, and (2) threshold crosses — a cross back above 25 after dipping below it, or back below 75 after pushing above it, is commonly used as a trigger for entries in the direction of the new move. Because the underlying MACD differential and the stochastic re-normalization both use closed-bar EMA values, the line tends to respond a little quicker at turning points than a plain MACD line does, which is the entire premise of the Schaff Trend Cycle concept.

Keep an eye on the CountBars input if you run this on a slow VPS or a chart with a very long history — it controls how far back the indicator recalculates on every tick, and a very large value can add unnecessary CPU load.

Best Timeframes / Best Use Cases

The default periods (MAShort 23, MALong 50, Cycle 10) were built around the same general balance the original Schaff Trend Cycle targets — a medium-speed trend/cycle filter rather than a scalping-grade signal. It tends to be most useful on H1 and above, where trend swings last long enough for the cycle-normalization step to mean something. On very low timeframes the short lookback windows can produce a choppier line, so traders who want to use it intraday often lengthen Cycle slightly to compensate. It works well paired with a trend filter (a longer moving average or a higher-timeframe bias) rather than being used completely standalone, since like any oscillator it can stay in overbought/oversold territory during a strong trend.

Final Thoughts

This Schaff Trend Cycle build is a faithful, no-frills conversion — one plotted line, four real inputs, no arrows, no alerts, no clutter. If you already use MACD-based tools and want something that reacts a bit sooner to genuine trend shifts without adding a second indicator window full of extra lines, it is a clean drop-in option. As with any oscillator, treat it as a timing and confirmation tool alongside price structure and a higher-timeframe trend read, not as a standalone signal generator.

Download the Schaff Trend Cycle Indicator MT4
  • MAShort (default 23) — Period of the short EMA of the typical price used to build the internal MACD-style differential.
  • MALong (default 50) — Period of the long EMA of the typical price used to build the internal MACD-style differential.
  • Cycle (default 10) — Lookback length for the stochastic-style high/low normalization step and the speed of the final smoothing pass.
  • CountBars (default 300) — Number of historical bars recalculated on each tick; set to 0 to use all available bars on the chart.

FAQs About the MT4 Schaff Trend Cycle Indicator MT4

One Quick Step

Enter your name and email and check your inbox for the download link.