new files added

This commit is contained in:
Toh4iem9
2025-11-23 18:51:50 +01:00
parent 3656c3d75c
commit b73cb434d2
@@ -0,0 +1,62 @@
# 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.