protected void IndicatorRisesLogic(int firstBar, int prvs, double[] adIndValue, ref IndicatorComp indCompLong, ref IndicatorComp indCompShort)
{
double sigma = Sigma();
for (int bar = firstBar; bar < Bars; bar++)
{
int currBar = bar - prvs;
int baseBar = currBar - 1;
bool isNoChange = true;
bool isHigher = adIndValue[currBar] > adIndValue[baseBar];
while (Math.Abs(adIndValue[currBar] - adIndValue[baseBar]) < sigma && isNoChange && baseBar > firstBar)
{
isNoChange = (isHigher == (adIndValue[baseBar + 1] > adIndValue[baseBar]));
baseBar--;
}
indCompLong.Value[bar] = adIndValue[currBar] > adIndValue[baseBar] + sigma ? 1 : 0;
indCompShort.Value[bar] = adIndValue[currBar] < adIndValue[baseBar] - sigma ? 1 : 0;
}
return;
}