◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Indicators / Vortex Indicator (VI)
Trend indicator

Vortex Indicator (VI)

Two crossing lines that traders read to gauge whether upward or downward movement has been more dominant recently.

Illustrative diagram — not live market data.

What it is

The Vortex Indicator (VI) is a trend tool made of two oscillating lines: VI+ (positive) and VI- (negative). It was introduced by Etienne Botes and Douglas Siepman in the January 2010 issue of Technical Analysis of Stocks & Commodities magazine. The two lines measure the strength of upward versus downward price movement over a chosen lookback period (commonly 14 bars). Traders typically use it to study the relationship between the two lines rather than to predict price. It is educational in nature and nothing about it is predictive; all trading carries risk of loss.

How it works

The indicator is built from price relationships between consecutive bars. First, "vortex movement" is measured two ways: positive vortex movement (VM+) is the absolute distance from the current high to the previous low, and negative vortex movement (VM-) is the absolute distance from the current low to the previous high. Each of these is summed over the lookback period (e.g., 14 bars). The two sums are then each divided by the summed True Range over the same period to normalize them. This produces VI+ and VI-, two positive-valued lines that typically oscillate around 1.0. VI+ rising above VI- reflects a period where upward movement has been larger relative to range; VI- above VI+ reflects the opposite. The lines are descriptive of recent movement and are not forecasts.

How traders read it

Common settings

Default length is 14 bars, as in the original 2010 article. Shorter lengths (e.g., 7-10) make the lines more reactive and noisier; longer lengths (e.g., 21-30) smooth them and delay crossovers. The indicator works on any timeframe.

Strengths

Pitfalls to watch

Pine v6 example

//@version=6
indicator("Vortex Indicator", overlay=false)

length = input.int(14, "Length", minval=1)

// Vortex movements
vmPlus  = math.abs(high - low[1])
vmMinus = math.abs(low - high[1])

// Summed true range and vortex movements over the period
sumTR    = math.sum(ta.tr(true), length)
sumVMPos = math.sum(vmPlus, length)
sumVMNeg = math.sum(vmMinus, length)

viPlus  = sumVMPos / sumTR
viMinus = sumVMNeg / sumTR

plot(viPlus,  "VI+", color = color.teal)
plot(viMinus, "VI-", color = color.red)

// Educational tool only. Not a signal or advice; trading carries risk of loss.

Pro tip: Because crossovers happen often in rangebound conditions, many traders look at the width and persistence of the gap between VI+ and VI- rather than reacting to every single cross. This is an observation about how the tool is commonly read, not a recommendation to trade.

Built an indicator from this? Run it through the Validator to catch look-ahead bias and repainting, or convert a strategy to Pine Script.

Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.

Catch the bug that compiles.Run auditGet Pro