### Syntax

```public SARSI(DataSeries ds, int period, double multiplier, string description)
public static SARSI Series(DataSeries ds, int period, double multiplier)
```

### Parameter Description

 ds The source DataSeries period RSI lookback period multiplier Constant multiplier

### Description

David Sepiashvili's Self-Adjusting RSI from February 2006 Traders' Tips (Stocks & Commodities magazine) presents a technique to adjust the traditional RSI overbought and oversold thresholds to ensure that 70-80% of RSI values lie between the two thresholds. Wealth-Lab's calculation is based on an algorithm by Sepiashvili which adjusts the thresholds based on a simple moving average of the RSI.

### Example

The demo Strategy below uses the traditional RSI rules, going long when the RSI indicator crosses over its lower benchmark and exiting when it crosses below the upper benchmark.

```using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using TASCIndicators;namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
RSI rsi = RSI.Series( Close,50 );
SARSIUpper saru = SARSIUpper.Series( Close,50,2.0 );
SARSILower sarl = SARSILower.Series( Close,50,2.0 );
ChartPane rsiPane = CreatePane( 40,true,true );
PlotSeries( rsiPane, rsi, Color.DarkBlue, LineStyle.Solid, 2 );
PlotSeriesFillBand( rsiPane, saru, sarl, Color.Silver, Color.Transparent, LineStyle.Solid, 2);

for(int bar = GetTradingLoopStartBar(50 * 3); bar < Bars.Count; bar++)
{
if (IsLastPositionActive)
{
if( CrossUnder(bar, rsi, saru) )
SellAtMarket(bar+1, LastPosition);
}
else
{
if( CrossOver(bar, rsi, sarl) )