mirror of
https://github.com/softwaredevelop/mql5.git
synced 2026-08-02 15:17:43 +00:00
new files added
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user