mirror of
https://github.com/softwaredevelop/mql5.git
synced 2026-07-27 20:47:44 +00:00
new files added
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user