new files added

This commit is contained in:
Toh4iem9
2026-05-25 19:33:34 +02:00
parent 60d12a5a02
commit 031e082fca
+95
View File
@@ -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.