4.4 KiB
Vortex Indicator (VI) Professional
1. Summary (Introduction)
The Vortex Indicator (VI), developed by Etienne Botes and Douglas Siepman, is a trend-following indicator designed to identify the start and direction of a new trend. It consists of two oscillating lines: a positive trend indicator (+VI) and a negative trend indicator (-VI).
The indicator's strength lies in its clear visual signals, which are generated by the crossover of its two lines. It is often used as an alternative or a confirmation tool for other trend systems like the ADX/DMI.
Our Vortex_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 VI is calculated by summing the "vortex movements" and the True Range over a specified period.
Required Components
- Period (N): The lookback period for the summation (default is 21 or 14).
- Price Data: The
High,Low, andCloseof each bar.
Calculation Steps (Algorithm)
-
Calculate True Range (TR) and Vortex Movements (VM): For each bar, calculate:
\text{True Range}_i = \text{Max}(\text{High}_i, \text{Close}_{i-1}) - \text{Min}(\text{Low}_i, \text{Close}_{i-1})\text{Positive VM}_i (+VM) = \text{Abs}(\text{High}_i - \text{Low}_{i-1})\text{Negative VM}_i (-VM) = \text{Abs}(\text{Low}_i - \text{High}_{i-1})
-
Sum the Components over Period N: Calculate the sum of TR, +VM, and -VM over the last
Nbars.\text{Sum TR}_N = \sum_{k=i-N+1}^{i} \text{TR}_k\text{Sum +VM}_N = \sum_{k=i-N+1}^{i} \text{+VM}_k\text{Sum -VM}_N = \sum_{k=i-N+1}^{i} \text{-VM}_k
-
Calculate the Final VI Lines: Normalize the summed Vortex Movements by the summed True Range.
\text{+VI}_i = \frac{\text{Sum +VM}_N}{\text{Sum TR}_N}\text{-VI}_i = \frac{\text{Sum -VM}_N}{\text{Sum TR}_N}
3. MQL5 Implementation Details
Our MQL5 implementation follows a modern, object-oriented design to ensure stability, reusability, and maintainability.
-
Modular Calculation Engine (
Vortex_Calculator.mqh): The entire calculation logic is encapsulated within a reusable include file.CVortexCalculator: The base class that performs the full VI calculation on a given set of High, Low, and Close prices.CVortexCalculator_HA: A child class that inherits all logic and only overrides the initial data preparation step to use smoothed Heikin Ashi prices.
-
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_calculatedto process only new bars. - Persistent Buffers: Internal buffers (TR, VM+, VM-) persist their state between ticks.
- Sliding Window: The summation over the lookback period is handled by an efficient sliding window logic (
sum += new_value; sum -= old_value;), which is significantly faster than recalculating the sum on every bar.
- State Tracking: It utilizes
4. Parameters
- Period (
InpPeriod): The lookback period for the summation. Common values are14or21. - Candle Source (
InpCandleSource): Allows the user to select the candle type for the calculation (StandardorHeikin Ashi).
5. Usage and Interpretation
- Trend Direction (Crossovers): The primary signal is the crossover of the two lines.
- Bullish Signal: The +VI line (blue) crosses above the -VI line (red), indicating that buying pressure is taking control.
- Bearish Signal: The +VI line (blue) crosses below the -VI line (red), indicating that selling pressure is dominant.
- Trend Confirmation (1.0 Level): The 1.0 level acts as a key threshold for trend strength.
- A trend is considered strong and confirmed when the dominant line (the one on top after a crossover) moves above the 1.0 level.
- Ranging Markets: When both lines are fluctuating below the 1.0 level and crossing frequently, it signals a sideways or non-trending market.
- Caution: The Vortex Indicator is a trend-following tool. Its SMA-like calculation basis can cause it to lag on lower timeframes. It is most effective for confirming the start of a new, sustained trend rather than catching the exact turning point.