Files
2025-12-20 23:22:06 +01:00

5.3 KiB

True Strength Index (TSI) Indicator Family

1. Summary (Introduction)

The True Strength Index (TSI), developed by William Blau, is a momentum oscillator designed to provide a smoother and more reliable measure of market momentum.

Our professional implementation is an indicator family consisting of two versions, both powered by a single, universal calculation engine:

  • TSI_Pro: The classic implementation, displaying the main TSI line and a signal line.
  • TSI_Oscillator_Pro: A histogram version that displays the difference between the TSI and its signal line, providing a clearer view of momentum acceleration/deceleration.

Pro Features: Both indicators support calculations based on either standard or Heikin Ashi price data, and offer unprecedented customization by allowing traders to replace the standard EMAs with other smoothing methods (like SMA, DEMA, or TEMA) for every step of the calculation.

2. Mathematical Foundations and Calculation Logic

The TSI is calculated by double-smoothing both the price momentum and the absolute price momentum, and then computing their ratio.

Required Components

  • Slow Period (N_slow): The period for the first, longer-term smoothing (standard is 25).
  • Fast Period (N_fast): The period for the second, shorter-term smoothing (standard is 13).
  • Signal Period: The period for the moving average signal line.
  • Source Price (P): The price series used for the calculation.

Calculation Steps (Algorithm)

  1. Calculate Price Momentum: \text{Momentum}_i = P_i - P_{i-1}

  2. First Smoothing (Slow Period): Apply an N_slow-period Moving Average to both the Momentum and its absolute value.

    • Classic TSI uses EMA here.
  3. Second Smoothing (Fast Period): Apply an N_fast-period Moving Average to the results of the first smoothing step.

    • Classic TSI uses EMA here.
  4. Calculate the TSI Value: Divide the double-smoothed momentum by the double-smoothed absolute momentum and scale the result to 100. \text{TSI}_i = 100 \times \frac{\text{MA}_{\text{fast}}(\text{MA}_{\text{slow}}(\text{Momentum}))_i}{\text{MA}_{\text{fast}}(\text{MA}_{\text{slow}}(\text{AbsMomentum}))_i}

  5. Calculate the Signal Line: The signal line is a moving average of the TSI line itself.

  6. Calculate the Oscillator (Histogram): The difference between the TSI and the Signal Line. \text{Oscillator}_i = \text{TSI}_i - \text{Signal}_i

3. MQL5 Implementation Details

Our MQL5 implementation follows a modern, component-based, object-oriented design.

  • Full Engine Integration: The core TSI calculator (TSI_Calculator.mqh) is a powerful orchestrator that utilizes five instances of our universal MovingAverage_Engine.mqh:

    1. Slow Momentum Engine: Smooths raw momentum.
    2. Fast Momentum Engine: Double-smooths the result.
    3. Slow Abs Momentum Engine: Smooths absolute momentum.
    4. Fast Abs Momentum Engine: Double-smooths the result.
    5. Signal Engine: Smooths the final TSI line. This architecture allows for extreme flexibility while maintaining code consistency.
  • Optimized Incremental Calculation (O(1)): Unlike basic implementations that recalculate the entire history on every tick, this indicator employs an intelligent incremental algorithm.

    • State Tracking: It utilizes prev_calculated to process only new bars.
    • Persistent Buffers: Internal buffers persist their state between ticks.
    • Robust Offset Handling: The engine correctly handles the initialization periods of the chained calculations.
  • Composition Pattern (Oscillator): The TSI_Oscillator_Calculator uses composition instead of inheritance. It internally owns and manages an instance of the main CTSICalculator. This ensures that the Oscillator version uses exactly the same mathematical logic as the Line version, guaranteeing 100% consistency.

4. Parameters

  • TSI Calculation Settings:
    • InpSlowPeriod: The period for the first smoothing step. (Default: 25).
    • InpSlowMAType: The MA type for the first smoothing. Set to EMA for classic TSI behavior. (Default: EMA).
    • InpFastPeriod: The period for the second smoothing step. (Default: 13).
    • InpFastMAType: The MA type for the second smoothing. Set to EMA for classic TSI behavior. (Default: EMA).
    • InpSourcePrice: The source price for the calculation. (Standard or Heikin Ashi).
  • Signal Line Settings:
    • InpSignalPeriod: The lookback period for the signal line. (Default: 13).
    • InpSignalMAType: The type of moving average for the signal line. (Default: EMA).

5. Usage and Interpretation

TSI_Pro (Line Chart)

  • Zero Line Crossovers: A crossover of the TSI line above the zero line indicates that long-term momentum has turned positive.
  • Signal Line Crossovers: These provide earlier, shorter-term momentum signals.
  • Overbought/Oversold Levels: The +25 and -25 levels are often used to identify extreme momentum.
  • Divergence: Excellent for spotting divergences between price and momentum.

TSI_Oscillator_Pro (Histogram)

  • Histogram > 0: The TSI is above its signal line (bullish momentum).
  • Histogram < 0: The TSI is below its signal line (bearish momentum).
  • Growing Histogram: Momentum is accelerating.
  • Shrinking Histogram: Momentum is decelerating (potential reversal warning).