Excellent help. Thanks for your extra effort of providing the coding example, particularly the console line print - that helped me figure out that all I need to do is rename the variable for each bband bar I want back in time.
For others out there with the same interest, here is how I coded it and checked the results:
double[][] bbands1 = indicators.bbands(instrument, period, OfferSide.BID, AppliedPrice.CLOSE, 20, stdDev, stdDev, MaType.EMA, Filter.WEEKENDS, 1, bidBar.getTime(), 0); //one bar back in time
console.getOut().println("bbands1 values: " + bbands1[0][0] + ", " + bbands1[1][0] + ", " + bbands1[2][0]);
double[][] bbands2 = indicators.bbands(instrument, period, OfferSide.BID, AppliedPrice.CLOSE, 20, stdDev, stdDev, MaType.EMA, Filter.WEEKENDS, 2, bidBar.getTime(), 0); //two bars back in time
console.getOut().println("bbands2 values: " + bbands2[0][0] + ", " + bbands2[1][0] + ", " + bbands2[2][0]);
double[][] bbands3 = indicators.bbands(instrument, period, OfferSide.BID, AppliedPrice.CLOSE, 20, stdDev, stdDev, MaType.EMA, Filter.WEEKENDS, 3, bidBar.getTime(), 0); //three bars back in time
console.getOut().println("bbands3 values: " + bbands3[0][0] + ", " + bbands3[1][0] + ", " + bbands3[2][0]);
double[][] bbands15 = indicators.bbands(instrument, period, OfferSide.BID, AppliedPrice.CLOSE, 20, stdDev, stdDev, MaType.EMA, Filter.WEEKENDS, 15, bidBar.getTime(), 0); //15 bars back in time
console.getOut().println("bbands15 values: " + bbands15[0][0] + ", " + bbands15[1][0] + ", " + bbands15[2][0]);
Now, for example, I can simply call the lower bband value that is 15 bars back by asking for "bbands15[2][0]". Not sure if this is the simplest way to do it, nor the least computer processor intensive since it is forced to run bbands multiple times for each bar, but it works. (If there is a cleaner way to program it, I'd love to know.)
Best regards,
Just4FX