diff --git a/Indicators/MyIndicators/VWMA_Pro.md b/Indicators/MyIndicators/VWMA_Pro.md new file mode 100644 index 0000000..d996323 --- /dev/null +++ b/Indicators/MyIndicators/VWMA_Pro.md @@ -0,0 +1,95 @@ +# Volume-Weighted Moving Average Pro (VWMA Pro) + +## 1. Summary (Introduction) + +The `VWMA_Pro` is an advanced, high-performance trend-following indicator designed to incorporate trading volume directly into price analysis. While traditional moving averages (like SMA or EMA) treat all bars equally regardless of trading activity, the Volume-Weighted Moving Average (VWMA) weights prices based on the volume transacted during each bar. + +This results in a moving average that reacts faster and more accurately during high-volume market events (such as breakouts, institutional positioning, and news releases) while remaining smooth and less prone to false signals during low-volume consolidation phases. + +As a core component of our professional suite, `VWMA_Pro` features complete, seamless integration with **Heikin Ashi** price structures, allowing traders to smooth out market noise while maintaining precise volume-weighted calculations. + +## 2. Mathematical Foundations and Calculation Logic + +The mathematical structure of the VWMA calculates the sum of the product of price and volume over a given lookback period, divided by the sum of the volume over that same period. + +### Mathematical Formula + +$$\text{VWMA}_t = \frac{\sum_{i=0}^{N-1} (P_{t-i} \times V_{t-i})}{\sum_{i=0}^{N-1} V_{t-i}}$$ + +Where: + +* $P_{t-i}$ = The selected price (e.g., Close, Typical, Heikin Ashi Close) at bar $t-i$. +* $V_{t-i}$ = The volume (Real Volume or Tick Volume) at bar $t-i$. +* $N$ = The lookback period (`InpPeriod`). + +### VWMA vs. SMA Comparison + +To understand the impact of volume, consider a lookback period ($N$) of 3 bars: + +| Bar | Price ($P$) | Volume ($V$) | $P \times V$ | +| :--- | :--- | :--- | :--- | +| Bar 1 | 100.00 | 1,000 | 100,000 | +| Bar 2 | 101.00 | 2,000 | 202,000 | +| Bar 3 | 105.00 | 7,000 | 735,000 | +| **Sum** | **-** | **10,000** | **1,037,000** | + +* **Simple Moving Average (SMA):** + $$\text{SMA} = \frac{100.00 + 101.00 + 105.00}{3} = 102.00$$ + +* **Volume-Weighted Moving Average (VWMA):** + $$\text{VWMA} = \frac{1,037,000}{10,000} = 103.70$$ + +Because the price surge to $105.00$ on Bar 3 was backed by significantly higher volume ($7,000$), the VWMA dynamically adjusted upward to reflect true institutional buying pressure. + +## 3. MQL5 Implementation Details + +The architecture of `VWMA_Pro` is strictly split between data visualization and mathematical computations to ensure modularity and code reuse. + +### Decoupled Engine Pattern + +* **Engine (`VWMA_Calculator.mqh`):** A stateful mathematical calculator encapsulated in the class `CVWMA_Calculator`. It performs the calculations on native chronological arrays (`ArraySetAsSeries(..., false)`). +* **Wrapper (`VWMA_Pro.mq5`):** A lightweight custom indicator that manages inputs, chart display buffers, and passes price and volume arrays to the engine. + +### Performance Optimization ($O(1)$) + +Rather than recalculating the entire history on every tick, the engine utilizes the platform's `prev_calculated` parameter. It limits calculation to the newest bars, achieving near-instantaneous execution even on large historical charts. + +### Platform-Aware Volume Selector + +MT5 brokers differ in whether they provide Real Volume or only Tick Volume. The indicator checks this dynamically: + +* If `SYMBOL_VOLUME_LIMIT` is greater than 0, the engine uses **Real Volume** (`volume[]`). +* If not, it automatically falls back to **Tick Volume** (`tick_volume[]`). + +### Robust Error and Edge-Case Handling + +* **Zero Volume Safety:** If the total volume sum within a lookback window is zero, the engine gracefully falls back to the current bar's price to prevent "Division by Zero" errors. +* **Missing Volume Fallback:** If the calculator is called from a context without volume data, it flags a warning in the terminal journal and sets the indicator buffer to `EMPTY_VALUE`, preventing the display of misleading chart data. + +## 4. Parameters + +* **Period (`InpPeriod`):** The lookback window ($N$) for the average calculation. Default is `20`. +* **Applied Price (`InpSourcePrice`):** The price source used as $P$ in the formula. Supports standard MT5 prices as well as custom Heikin Ashi calculated prices: + * Standard: Close, Open, High, Low, Median, Typical, Weighted. + * Heikin Ashi: HA Close, HA Open, HA High, HA Low, HA Median, HA Typical, HA Weighted. + +## 5. Usage and Interpretation + +### A. Volume Confirmation (VWMA vs. SMA) + +By plotting a VWMA and an SMA of the same period on the same chart, traders can visualize institutional participation: + +* **Bullish Institutional Pressure:** When the VWMA is **above** the SMA, it means prices are rising on higher volume. +* **Bearish Institutional Pressure:** When the VWMA is **below** the SMA, it means prices are falling on higher volume. +* **Low-volume divergence:** If price rises but the VWMA falls below the SMA, the upward move lacks volume confirmation and is likely a retail trap. + +### B. Breakout Validation + +During major support or resistance breakouts: + +* If the price crosses the VWMA on **expanding volume**, the breakout is validated. +* If the price moves past a level but the VWMA remains sluggish, the breakout is weak and prone to failure. + +### C. Dynamic Support and Resistance + +The VWMA acts as a highly reliable support/resistance level because it represents the average transaction price weighted by actual volume. Markets tend to retest and bounce off the VWMA line during healthy trends.