Log in to see Cloud of Tags

Wealth-Lab Wiki

TASC 2015-08 | The Slow Relative Volume Index (Apirine)


Traders' Tip text

The slow relative volume index (SVSI) indicator created by Vitali Apirine is a momentum volume oscillator similar to its sibling SRSI in application and interpretation. Oscillating between 0 and 100, it becomes overbought after reaching 80 and oversold after dropping below 20. Signals can also be generated by looking for centerline crossovers and divergences.

Like RSI after which SVSI is modeled, SVSI could be put to use to screen for dips in established trends. The example trading system will focus on this ability. Here are its rules:

  • Established long trend: close price is above a medium-term SMA
  • Dip in the uptrend: SVSI gets below 50
  • Enter long at market next bar
  • Exit long on a trailing stop when the low price falls below the lowest low of N days

The trailing stop parameter (lowest low of N days) controls the trade duration: set it to a shorter period (5 bars) to profit from small rallies or to a longer period (e.g. 20-50 bars) to catch larger trends.


Figure 1. A characteristic trade in ^DJIA when the SVSI dipped below 50 in a strong uptrend.

The SVSI indicator is installed under the TASC Magazine Indicators group after updating the TASCIndicators library to version 2015.07 or later, You can plot it on a chart or use it as an entry or exit condition in a Rule-based Strategy without having to program a line of code yourself.

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using TASCIndicators;

namespace WealthLab.Strategies { public class TASCTips201507 : WealthScript { private StrategyParameter paramSVSIPeriod; private StrategyParameter paramSVSIWMAPeriod; private StrategyParameter paramSVSIThreshold; private StrategyParameter paramSMAPeriod; private StrategyParameter paramExitChannel; public TASCTips201507() { paramSVSIPeriod = CreateParameter("SVSI Period",6,6,30,2); paramSVSIWMAPeriod = CreateParameter("SVSI WilderMA Period",14,8,52,4); paramSVSIThreshold = CreateParameter("SVSI Threshold",50,40,90,5); paramSMAPeriod = CreateParameter("SMA Period",40,10,100,10); paramExitChannel = CreateParameter("Trailing Exit",20,5,50,5); } protected override void Execute() { int svsiThreshold = paramSVSIThreshold.ValueInt; int smaPeriod = paramSMAPeriod.ValueInt; int trailingExit = paramExitChannel.ValueInt; SVSI svsi = SVSI.Series(Bars,paramSVSIPeriod.ValueInt, paramSVSIWMAPeriod.ValueInt); SMA sma = SMA.Series(Close,smaPeriod); ChartPane paneSVSI1 = CreatePane(40,true,true); PlotSeries(PricePane,sma,Color.MediumVioletRed,LineStyle.Solid,1); PlotSeries(paneSVSI1,svsi,Color.FromArgb(255,255,128,0),LineStyle.Solid,2); DrawHorzLine(paneSVSI1,50,Color.DodgerBlue,LineStyle.Dashed,2);

for(int bar = GetTradingLoopStartBar(1); bar < Bars.Count; bar++) { if (IsLastPositionActive) { SellAtTrailingStop(bar+1,LastPosition, Lowest.Series(Low,trailingExit)[bar]); } else { if( Close[bar] > sma[bar] && svsi[bar] < svsiThreshold ) BuyAtMarket(bar+1); } } } } }

Wealth-Lab team

Important Disclaimer: The information provided by Wealth-Lab is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security.  The owner of Wealth-Lab.com assumes no liability resulting from the use of the material contained herein for investment purposes. By using this web site, you agree to the terms of this disclaimer and our Terms of Use.

ScrewTurn Wiki. Some of the icons created by FamFamFam.