Files

80 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2025-08-24 17:15:47 +02:00
# MACD Pro (with Selectable MA Types)
## 1. Summary (Introduction)
The MACD Pro is an enhanced version of the classic Moving Average Convergence/Divergence indicator. While the standard MACD uses Exponential Moving Averages (EMAs), this "Pro" version offers traders the flexibility to choose from **seven** different moving average types for its calculation.
2025-08-24 17:15:47 +02:00
2025-09-30 12:41:01 +02:00
This customization allows traders to fine-tune the indicator's responsiveness and smoothness. Our `MACD_Pro` implementation is a unified, professional version that allows the calculation to be based on either **standard** or **Heikin Ashi** price data, selectable from a single input parameter.
2025-08-24 17:15:47 +02:00
## 2. Mathematical Foundations and Calculation Logic
The MACD Pro follows the classic MACD structure but generalizes the moving average calculation.
### Required Components
2025-09-30 12:41:01 +02:00
* **Fast Period, Slow Period, Signal Period:** The lookback periods for the three moving averages.
* **Source MA Type:** The type of MA to be used for the Fast and Slow lines.
* **Signal MA Type:** The type of MA to be used for the Signal Line.
* **Source Price (P):** The price series used for the calculation.
2025-08-24 17:15:47 +02:00
### Calculation Steps (Algorithm)
1. **Calculate the Fast MA:** Compute a moving average of the source price using the fast period and the selected `Source MA Type`.
2025-09-30 12:41:01 +02:00
$\text{FastMA} = \text{MA}(\text{Price}, \text{FastPeriod}, \text{SourceMAType})$
2025-08-24 17:15:47 +02:00
2. **Calculate the Slow MA:** Compute a moving average of the source price using the slow period and the selected `Source MA Type`.
2025-09-30 12:41:01 +02:00
$\text{SlowMA} = \text{MA}(\text{Price}, \text{SlowPeriod}, \text{SourceMAType})$
2025-08-24 17:15:47 +02:00
3. **Calculate the MACD Line:** Subtract the Slow MA from the Fast MA.
2025-09-30 12:41:01 +02:00
$\text{MACD Line} = \text{FastMA} - \text{SlowMA}$
2025-08-24 17:15:47 +02:00
4. **Calculate the Signal Line:** Compute a moving average of the **MACD Line** using the signal period and the selected `Signal MA Type`.
2025-09-30 12:41:01 +02:00
$\text{Signal Line} = \text{MA}(\text{MACD Line}, \text{SignalPeriod}, \text{SignalMAType})$
2025-08-24 17:15:47 +02:00
5. **Calculate the Histogram:** Subtract the Signal Line from the MACD Line.
2025-09-30 12:41:01 +02:00
$\text{Histogram} = \text{MACD Line} - \text{Signal Line}$
2025-08-24 17:15:47 +02:00
## 3. MQL5 Implementation Details
2025-09-30 12:41:01 +02:00
Our MQL5 implementation follows a modern, object-oriented design to ensure stability, reusability, and maintainability.
2025-08-24 17:15:47 +02:00
2025-09-30 12:41:01 +02:00
* **Modular Calculation Engine (`MACD_Calculator.mqh`):**
The entire calculation logic is encapsulated within a reusable include file.
* **Composition Pattern:** The calculator internally instantiates **three** dedicated `CMovingAverageCalculator` engines (from our universal `MovingAverage_Engine.mqh`):
1. **Fast Engine:** Calculates the Fast MA.
2. **Slow Engine:** Calculates the Slow MA.
3. **Signal Engine:** Calculates the Signal Line smoothing.
This ensures that the core MA logic is consistent across the entire indicator and allows for advanced combinations (e.g., DEMA-based MACD with TEMA Signal).
2025-08-24 17:15:47 +02:00
* **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 (Fast/Slow MA -> MACD Line -> Signal Line), ensuring that each step starts only when valid data is available. This prevents artifacts and "INF" errors at the beginning of the chart.
2025-08-24 17:15:47 +02:00
* **Heikin Ashi Integration:** An inherited `_HA` class allows the calculation to be performed seamlessly on smoothed Heikin Ashi data, leveraging the same optimized engine.
2025-08-24 17:15:47 +02:00
## 4. Parameters
* **Fast Period (`InpFastPeriod`):** The period for the shorter-term MA. (Default: `12`).
* **Slow Period (`InpSlowPeriod`):** The period for the longer-term MA. (Default: `26`).
* **Signal Period (`InpSignalPeriod`):** The period for the signal line's MA. (Default: `9`).
* **Applied Price (`InpSourcePrice`):** The source price for the calculation. (Standard or Heikin Ashi).
* **Source MA Type (`InpSourceMAType`):** The MA type for the Fast and Slow lines. Supports: **SMA, EMA, SMMA, LWMA, TMA, DEMA, TEMA**. (Default: `EMA`).
* **Signal MA Type (`InpSignalMAType`):** The MA type for the Signal line. Supports: **SMA, EMA, SMMA, LWMA, TMA, DEMA, TEMA**. (Default: `EMA`).
2025-08-24 17:15:47 +02:00
## 5. Usage and Interpretation
The interpretation of the MACD Pro is identical to the standard MACD, but the signals may be faster or slower depending on the selected MA types.
2025-09-30 12:41:01 +02:00
* **Signal Line Crossovers:** The primary signal. A crossover of the MACD Line above the Signal Line is bullish; a cross below is bearish.
* **Zero Line Crossovers:** A secondary signal confirming the overall trend direction.
* **Divergence:** A powerful signal where the indicator's momentum disagrees with the price action.
* **Histogram:** Visually represents the momentum's acceleration or deceleration.
2025-08-24 17:15:47 +02:00
**Effect of MA Types:**
2025-09-30 12:41:01 +02:00
* **EMA (Default):** The classic, balanced MACD.
* **TEMA/DEMA:** Using these will result in a much faster, more responsive MACD, ideal for scalping.
* **TMA:** Using Triangular MA will result in a very smooth, laggy MACD, useful for filtering out noise in long-term trends.