Log in to see Cloud of Tags

Wealth-Lab Wiki

TASC 2007-11 | Short-Term Volume And Price Oscillator (SVAPO) (Vervoort)


Traders' Tip text

We've added Sylvain Vervoort's SVAPO indicator to the Wealth-Lab TASCIndicators library for easy reference in any strategy. Since Vervoot promises to discuss the use of SVAPO in a trading strategy with price targets in a follow-up article, for now we'll simply provide an example of WealthScript C# code that accesses the SVAPO indicator, which we use to calculate the upper and lower standard deviation bands per the article (Figure 1).


Figure 1: SVAPO's "buy" signal for BA in March 2004 was timely indeed to catch the beginning of a significant move higher.


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

namespace WealthLab.Strategies { public class TASC200711 : WealthScript { private StrategyParameter paramPeriod; private StrategyParameter paramCutoff;

public TASC200711() { paramPeriod = CreateParameter("Period", 8, 1, 100, 1); paramCutoff = CreateParameter("Cutoff", 1, 0.1, 10, 0.1); } protected override void Execute() { int period = paramPeriod.ValueInt; double cutoff = paramCutoff.Value; double devH = 1.5; double devL = 1.3; int sdPeriod = 100; var svapo = SVAPO.Series( Bars, period, cutoff ); var sdUpper = StdDev.Series( svapo, sdPeriod, StdDevCalculation.Sample ) * devH; var sdLower = StdDev.Series( svapo, sdPeriod, StdDevCalculation.Sample ) * -devL; sdUpper.Description = "SVAPO Upper Band"; sdLower.Description = "SVAPO Lower Band"; HideVolume(); var SvapoPane = CreatePane( 35, false, false ); PlotSeries( SvapoPane, svapo, Color.Blue, LineStyle.Solid, 2 ); PlotSeriesFillBand(SvapoPane, sdUpper, sdLower, Color.Silver, Color.Transparent, LineStyle.Dotted, 2); DrawHorzLine( SvapoPane, 0, Color.Gray, LineStyle.Dotted, 2 ); for(int bar = GetTradingLoopStartBar(1); bar < Bars.Count; bar++) { if (IsLastPositionActive) { Position p = LastPosition; if ( CrossUnder( bar, svapo, sdUpper ) ) SellAtMarket( bar+1, p ); } else { if ( CrossOver( bar, svapo, sdLower ) ) BuyAtMarket( bar+1 ); } }

} } }

Robert Sucher
Re-created in C# by Eugene
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.