Syntax
public ATRBandUpper(Bars bars, DataSeries ds, int atrPeriod, double atrMult, string description)
public static ATRBandUpper(Bars bars, DataSeries ds, int atrPeriod, double atrMult)Parameter Description
  
    | bars | The Bars object | 
  
    | ds | Data series to use as the center line | 
  
    | atrPeriod | The period to smooth Average True Range | 
  
    | atrMult | Multiple of the average true range used to determine the modified Keltner Channel bands. | 
Description
This technical indicator is created by plotting two bands around a user-selected data series (usually, a short-term simple moving average), also known as the 
center line. The upper band is created by adding a value of the average true range (ATR) to the center line. The lower band is created by subtracting a value of the ATR from the center line.  See also: 
ATRBandLower.
Interpretation
This indicator is similar in calculation and interpretation to Bollinger Bands. 
- There are numerous uses of this technique. One possible way is to interpret a move toward the upper band to signal an impending pull back of the price toward the moving average, and a move toward the lower band as a signal that the price may head back higher.
- On the contrary, trend traders may treat a move beyond the bands as an increase in momentum and continuation of the trend.
 
Calculation
Center Line = 
dsUpper Band = Center Line + 
atrMult times ATR(
atrPeriod)
Lower Band = Center Line - 
atrMult times ATR(
atrPeriod)
Example
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;
namespace WealthLab.Strategies
{
	public class MyStrategy : WealthScript
	{
		protected override void Execute()
		{
			HideVolume();
			LinearReg lr = LinearReg.Series( Close,10 );
			ATRBandUpper ub = new ATRBandUpper( Bars, lr, 10, 2, "My Upper ATR Band" );
			ATRBandLower lb = new ATRBandLower( Bars, lr, 10, 2, "My Lower ATR Band" );
			PlotSeriesFillBand( PricePane, ub, lb, Color.Transparent, Color.FromArgb( 30, Color.Blue ), LineStyle.Solid, 1 );
			
			for(int bar = ub.FirstValidValue; bar < Bars.Count; bar++)
			{
				if (IsLastPositionActive)
				{
					Position p = LastPosition;
					if ( bar+1 - p.EntryBar >= 10 )
						ExitAtMarket( bar+1, p, "Timed" );
				}
				else
				{
					if( ( CumUp.Series( High,1 )bar >= 2 ) && ( Highbar > ubbar ))
						ShortAtMarket( bar + 1 );
						else
					if( ( CumDown.Series( Low,1 )bar >= 2 ) && ( Lowbar < lbbar ))
						BuyAtMarket( bar + 1 );
				}
			}
		}
	}
}