Files
mql5/Indicators/MyIndicators/Authors/Kaufman/CenteredMA_Pro.md
T
2025-11-23 18:51:50 +01:00

4.3 KiB

Centered Moving Average (CMA) Professional

1. Summary (Introduction)

The Centered Moving Average (CMA), a concept popularized by J.M. Hurst in his work on cycle analysis, is a specialized analytical tool designed to visually eliminate the inherent lag of a standard moving average on historical data.

Unlike a regular moving average that always lags behind the price, the CMA is mathematically shifted backwards in time. The result is a trendline whose peaks and troughs are perfectly aligned with the cyclical turning points of the price itself.

Important Note: The CMA is an analytical and research tool, not a real-time trading indicator. Due to its backward-shifting nature, its value cannot be calculated for the most recent bars on the chart.

Our CenteredMA_Pro implementation allows the user to apply this centering technique to any of the core moving average types (SMA, EMA, etc.) and supports both standard and Heikin Ashi price data.

2. Mathematical Foundations and Calculation Logic

The logic behind the CMA is a simple but powerful two-step process.

Required Components

  • Period (N): The lookback period for the moving average.
  • MA Type: The type of moving average to be calculated (SMA, EMA, etc.).
  • Source Price (P).

Calculation Steps (Algorithm)

  1. Calculate a Standard Moving Average: First, a standard, lagging moving average (MA) is calculated for the entire price history using the selected period N and MA type.

  2. Shift the Moving Average Backwards: The entire calculated MA line is then shifted to the left (backwards in time) by a specific amount to align it with the center of the data it was calculated from.

    • \text{Shift Amount} = \text{Integer}(\frac{N - 1}{2})
    • \text{CMA}_t = \text{MA}_{t + \text{Shift Amount}}

This shifting process is the reason why the CMA line does not extend to the most recent price bar; to calculate the CMA for today, one would need the moving average value from several bars into the future, which is impossible.

3. MQL5 Implementation Details

  • Modular Design (Composition): The CCenteredMACalculator does not recalculate the moving average itself. Instead, it contains an instance of our universal CMovingAverageCalculator. This is a highly efficient use of our modular toolkit.

  • Two-Step Calculation: In OnCalculate, the indicator first calls the internal CMovingAverageCalculator to generate the standard, lagging MA into a temporary buffer. It then performs a second loop to shift the data from the temporary buffer into the final, visible indicator buffer.

  • Heikin Ashi Integration: By leveraging our universal MA engine, the CMA seamlessly supports calculations on Heikin Ashi data.

4. Parameters

  • Period (InpPeriod): The lookback period for the moving average.
  • MA Type (InpMAType): A dropdown menu to select the desired moving average type (SMA, EMA, SMMA, LWMA, etc.).
  • Applied Price (InpSourcePrice): The source price for the calculation.

5. Usage and Interpretation

The CMA is a powerful tool for historical analysis, research, and strategy development. It should not be used for generating real-time entry or exit signals.

1. Visual Cycle Identification (Primary Use)

  • The CMA's primary function is to provide a perfectly lag-free visualization of past trend cycles. By observing the distance (in bars) between the peaks and troughs of the CMA line, you can get a clear and objective measure of the dominant cycle lengths in a specific market and timeframe.

2. Strategy Validation and Backtesting

  • The CMA acts as a "perfect" hindsight trendline. It can be used to validate the signals of faster, real-time oscillators.
  • Example: Place a CMA and an RSI on the chart. Look back at historical data. If the RSI consistently reaches oversold levels (<30) at or very near the troughs of the CMA, it provides strong confirmation that the RSI is well-tuned for identifying cyclical bottoms in that market.

3. Educational Tool

  • By placing a CMA and a standard MovingAverage_Pro with the same period on the chart, you can visually see and measure the exact amount of lag that a normal moving average introduces. This is an excellent way to understand the inherent trade-offs of trend-following indicators.