Вы используете общее имя и параметры для кеширования. Второй боллинжер не расчитывается, нужно так:
IList<double> BB = ctx.GetData("BollingerBands+", new[] {BBPeriod.ToString()},
delegate { return Series.BollingerBands(source.ClosePrices, BBPeriod,1,true); });

IList<double> BB1 = ctx.GetData("BollingerBands-", new[] {BB1Period.ToString()},
delegate { return Series.BollingerBands(source.ClosePrices, BB1Period,1,false); });


или так:

IList<double> BB = ctx.GetData("BollingerBands", new[] {BBPeriod.ToString(), "true"},
delegate { return Series.BollingerBands(source.ClosePrices, BBPeriod,1,true); });

IList<double> BB1 = ctx.GetData("BollingerBands", new[] {BB1Period.ToString(), "false"},
delegate { return Series.BollingerBands(source.ClosePrices, BB1Period,1,false); });