Files

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, and Close of each bar.

Calculation Steps (Algorithm)

  1. 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})
  2. Sum the Components over Period N: Calculate the sum of TR, +VM, and -VM over the last N bars.

    • \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
  3. 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_calculated to 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.

4. Parameters

  • Period (InpPeriod): The lookback period for the summation. Common values are 14 or 21.
  • Candle Source (InpCandleSource): Allows the user to select the candle type for the calculation (Standard or Heikin 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.