### Question:
BollingerBandsLowerIndicator extends CachedIndicator<Decimal> { public Decimal getK() { return k; } BollingerBandsLowerIndicator(BollingerBandsMiddleIndicator bbm, Indicator<Decimal> indicator);  BollingerBandsLowerIndicator(BollingerBandsMiddleIndicator bbm, Indicator<Decimal> indicator, Decimal k); Decimal getK(); @Override String toString();  }### Answer:
@Test public void bollingerBandsLowerUsingSMAAndStandardDeviation() { BollingerBandsMiddleIndicator bbmSMA = new BollingerBandsMiddleIndicator(sma); StandardDeviationIndicator standardDeviation = new StandardDeviationIndicator(closePrice, timeFrame); BollingerBandsLowerIndicator bblSMA = new BollingerBandsLowerIndicator(bbmSMA, standardDeviation); assertDecimalEquals(bblSMA.getK(), 2); assertDecimalEquals(bblSMA.getValue(0), 1); assertDecimalEquals(bblSMA.getValue(1), 0.5); assertDecimalEquals(bblSMA.getValue(2), 0.367); assertDecimalEquals(bblSMA.getValue(3), 1.367); assertDecimalEquals(bblSMA.getValue(4), 2.3905); assertDecimalEquals(bblSMA.getValue(5), 2.7239); assertDecimalEquals(bblSMA.getValue(6), 2.367); BollingerBandsLowerIndicator bblSMAwithK = new BollingerBandsLowerIndicator(bbmSMA, standardDeviation, Decimal.valueOf("1.5")); assertDecimalEquals(bblSMAwithK.getK(), 1.5); assertDecimalEquals(bblSMAwithK.getValue(0), 1); assertDecimalEquals(bblSMAwithK.getValue(1), 0.75); assertDecimalEquals(bblSMAwithK.getValue(2), 0.7752); assertDecimalEquals(bblSMAwithK.getValue(3), 1.7752); assertDecimalEquals(bblSMAwithK.getValue(4), 2.6262); assertDecimalEquals(bblSMAwithK.getValue(5), 2.9595); assertDecimalEquals(bblSMAwithK.getValue(6), 2.7752); }