Files

62 lines
4.1 KiB
Markdown

# Pascal Weighted Moving Average (Pascal WMA) Professional
## 1. Summary (Introduction)
The Pascal Weighted Moving Average (Pascal WMA) is a unique type of weighted moving average that derives its weights from the coefficients of Pascal's triangle. This produces a set of weights that are perfectly symmetrical and follow a smooth, bell-shaped (Gaussian-like) curve.
The Pascal WMA is a **symmetrical smoothing filter**. Its primary purpose is not to follow trends with minimal lag, but to provide an exceptionally smooth and stable representation of the market's central tendency.
Our `PascalWMA_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.
## 2. Mathematical Foundations and Calculation Logic
The Pascal WMA calculates a weighted average where the weights are the binomial coefficients found in a row of Pascal's triangle.
### Required Components
* **Period (N):** The lookback period for the moving average.
* **Source Price:** The price series used for calculation.
### Calculation Steps (Algorithm)
1. **Generate Pascal Weights:** For a given period `N`, the weights are the coefficients of the binomial expansion of $(x+y)^{N-1}$. The `k`-th weight is calculated using the combination formula:
* $Weight_k = C(N-1, k) = \frac{(N-1)!}{k! \cdot (N-1-k)!}$
2. **Calculate the Weighted Sum:** For each bar `t`, multiply the last `N` prices by the corresponding Pascal coefficients.
* $\text{Weighted Sum}_t = \sum_{i=0}^{N-1} (\text{Price}_{t-i} \cdot Weight_i)$
3. **Calculate the Sum of Weights:** Sum all the generated Pascal weights. The sum of the `n`-th row is $2^n$.
* $\text{Sum of Weights} = 2^{N-1}$
4. **Calculate the Final WMA Value:** Divide the weighted sum of prices by the sum of the weights.
* $\text{Pascal WMA}_t = \frac{\text{Weighted Sum}_t}{\text{Sum of Weights}}$
## 3. MQL5 Implementation Details
Our MQL5 implementation follows a modern, object-oriented design to ensure stability, reusability, and maintainability.
* **Modular Calculation Engine (`PascalWMA_Calculator.mqh`):**
The entire calculation logic is encapsulated within a reusable include file.
* **`CPascalWMACalculator`**: The base class that performs the full calculation on a given source price.
* **`CPascalWMACalculator_HA`**: A child class that inherits all the complex logic and only overrides the initial data preparation step to use smoothed Heikin Ashi prices as its input.
* **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 Weight Generation:** The Pascal's triangle coefficients are calculated only once during initialization using an iterative method to prevent integer overflow for large periods.
## 4. Parameters
* **Period (`InpPeriod`):** The lookback period for the moving average. A longer period results in a smoother line. (Default: `21`).
* **Applied Price (`InpSourcePrice`):** The source price for the calculation. (Standard or Heikin Ashi).
## 5. Usage and Interpretation
The Pascal WMA should be interpreted as a **high-quality smoothing filter and a "mean" or "center of gravity" line**, not as a traditional trend-following moving average.
* **Noise Reduction and Trend Clarity:** The primary use is to filter out market noise and provide a clearer picture of the underlying price movement.
* **Mean Reversion Signals:** The line acts as a "magnet" for the price. When the price moves significantly away from the Pascal WMA, it can be considered over-extended, increasing the probability of a reversion back towards the line.
* **Caution:** Due to its inherent nature as a centered, smoothing filter, the Pascal WMA will always lag the price. It should **not** be used for fast crossover signals. Its strength lies in its exceptional smoothness and its ability to define the market's equilibrium point.