Log in to see Cloud of Tags

Wealth-Lab Wiki

Syntax


public static int BarsSince(this int bar, bool condition )

public int BarsSince(int bar, bool condition )

Parameter Description

barBar
condition Any boolean condition

Description

In MetaStock formula language, BarsSince(Expression) is used to return the number of bars elapsed since an expression was encountered. Here is its WealthScript analogue returning the bar on which the expression became true. Consequently, to arrive at BarSince one must subtract that saved bar from current bar. The code sample below illustrates the idea.

Example

The following example demonstrates how, using the BarsSince function, is possible to create a data series that holds the number of bars since the high price has broke through the highest high of the past 40 bars:

Example using C# extension methods:


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

namespace WealthLab.Strategies { public class BarsSinceDemo : WealthScript { protected override void Execute() { DataSeries barsSince = new DataSeries(Bars,"Bars Since Breakout(40)"); int b1 = 0; int markbar = 0;

// Building BarsSinceBreakout series for(int bar = 41; bar < Bars.Count; bar++) { if( bar.BarsSince( ( High[bar] > Highest.Series(High,40)[bar-1] ) ) == 0 ) markbar = bar; barsSince[bar] = bar - markbar; }

PlotSeries( PricePane, Highest.Series(High,40), Color.Blue, LineStyle.Dashed, 2 ); SetBarColors( Color.Silver,Color.Silver ); ChartPane bscPane = CreatePane(30,true,true); PlotSeries(bscPane, barsSince, Color.Blue, LineStyle.Histogram, 3 ); } } }

Legacy syntax example:


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Components; // BarsSince here
/*** Requires installation of Community.Components Extension from www.wealth-lab.com > Extensions ***/

namespace WealthLab.Strategies { public class BarsSinceDemo : WealthScript { protected override void Execute() { Calculate c = new Calculate(this); // pass an instance of the WealthScript object DataSeries barsSince = new DataSeries(Bars,"Bars Since Breakout(40)"); int b1 = 0; int markbar = 0;

// Building BarsSinceBreakout series for(int bar = 41; bar < Bars.Count; bar++) { if( c.BarsSince( bar, ( High[bar] > Highest.Series(High,40)[bar-1] ) ) == 0 ) markbar = bar; barsSince[bar] = bar - markbar; }

PlotSeries( PricePane, Highest.Series(High,40), Color.Blue, LineStyle.Dashed, 2 ); SetBarColors( Color.Silver,Color.Silver ); ChartPane bscPane = CreatePane(30,true,true); PlotSeries(bscPane, barsSince, Color.Blue, LineStyle.Histogram, 3 ); } } }

The BarsSinceBreakout series created

The BarsSinceBreakout series created

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.