code: def _get_boll(cls, df):
          
          moving_avg = df['close_{}_sma'.format(cls.BOLL_PERIOD)]
          moving_std = df['close_{}_mstd'.format(cls.BOLL_PERIOD)]
          df['boll'] = moving_avg
          moving_avg = list(map(np.float64, moving_avg))
          moving_std = list(map(np.float64, moving_std))
          # noinspection PyTypeChecker
          df['boll_ub'] = np.add(moving_avg,
                                 np.multiply(cls.BOLL_STD_TIMES, moving_std))
          # noinspection PyTypeChecker
          df['boll_lb'] = np.subtract(moving_avg,
                                      np.multiply(cls.BOLL_STD_TIMES,
                                                  moving_std))
docs: Get Bollinger bands.
  
          boll_ub means the upper band of the Bollinger bands
          boll_lb means the lower band of the Bollinger bands
          boll_ub = MA + Kσ
          boll_lb = MA − Kσ
          M = BOLL_PERIOD
          K = BOLL_STD_TIMES
          :param df: data
          :return: None