Volatility Stops (VT)

Volatility Stops (VT) was authored by Welles Wilder. The VT identifies exit points for long and short positions. First, an exponential moving average (EMA) of the input is taken to determine the current trend. Then, the Average True Range (ATR) is calculated and multiplied by a user defined factor. If the EMA is increasing (uptrend), the ATR product is subtracted from the highest price for the period or, if the EMA is decreasing (down trend), it is added to the lowest price for the period. This final value of the VT is displaced to one future bar. The user may change the position (long), input (close), method (EMA), period lengths and percent factor. This indicator’s definition is further expressed in the condensed code given in the calculation below.

Volatility Stops1

How To Trade Using Volatility Stops

Volatility Stops are designed to aid in exit decisions. For long positions, if the price crossed below the VSTOP and it is an uptrend a sell signal is generated. Conversely, for short positions, if the price crossed above the VSTOP and it is a downtrend a buy to cover signal is given.

Volatility Stops2

How To Access in MotiveWave

Go to the top menu, choose Study>Exit Strategies>Volatility Stops

or go to the top menu, choose Add Study, start typing in this study name until you see it appear in the list, click on the study name, click OK.

Important Disclaimer: The information provided on this page is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security. Please see our Risk Disclosure and Performance Disclaimer Statement.


//position = pos, user defined, default is long
//input = price, user defined, default is close
//method = moving average (ma), user defined, default is EMA
//period1 = maP, user defined, default is 63
//period2 = artP, user defined, default is 21
//factor = fac, user defined, default is 3
//art = Average True Range
//index = current bar number, prev = previous
//shortP = short position, longP = long position

longP = pos == "Long";
shortP = pos == "Short";
vstop = 0;
sic = 0, atrUp = 0, atrDn = 0;
ma = ma(method, index, maP, input);
upTrend = price moreThan ma;;
dnTrend = price lessOr= ma;
if (longP AND upTrend)
    atrUp = atr(index, atrP);
    sic = highest(index, atrP, input);
    vstop = sic - (fac * atrUp);
if (shortP AND dnTrend)
    atrDn = atr(index, atrP);
    sic = lowest(index, atrP, input);
    vstop = sic + (fac * atrDn);
if (vstop != 0) vstop[index+1];
prevP = price[index-1];
if (vstop != 0) {
    sell = prevP moreThan vstop AND price lessThan vstop AND longP AND upTrend;
    buy = prevP lessThan vstop AND price moreThan vstop AND shortP AND dnTrend;