Basically I want a the lookback period to be able to change on every bar defined by this integer p, p is between _MinERPeriod and _BaseERPeriod. However, when too many bars are loaded. The variable
noise
protected override void OnBarUpdate()
{
er[0] = 0;
diffSeries[0] = 0;
diffSeries[0] = CurrentBar > 0 ? Math.Abs(Input[0] - Input[1]): 0;
double DCWidthBase = DonchianChannel(_BaseERPeriod).Upper[0] - DonchianChannel(_BaseERPeriod).Lower[0];
int p = _MinERPeriod;
for (int i = _MinERPeriod; i<= _BaseERPeriod; i++)
{
p = i;
double DCWidth = DonchianChannel(i).Upper[0] - DonchianChannel(i).Lower[0];
if (DCWidth >= _PctThreshold * DCWidthBase)
{
break;
}
}
if (CurrentBar < DCWidthBase)
{
return;
}
double signal = Math.Abs(Input[0] - Input[p]);
double noise = SUM(diffSeries, p)[0];
if (noise == 0)
{
er[0] = er[1];
return;
}
if (noise < 0)
{
Print(p);
return;
}
er[0] = signal / noise;
ER[0] = er[0];
}

Comment