class_docstr: Bollinger Bands technical indicator.
  https://en.wikipedia.org/wiki/Bollinger_Bands
  
  **Default Inputs:** :data:`zipline.pipeline.data.EquityPricing.close`
  
  Parameters
  ----------
  inputs : length-1 iterable[BoundColumn]
      The expression over which to compute bollinger bands.
  window_length : int > 0
      Length of the lookback window over which to compute the bollinger
      bands.
  k : float
      The number of standard deviations to add or subtract to create the
      upper and lower bands.
code: def compute(self, today, assets, out, close, k):
      difference = k * nanstd(close, axis=0)
      out.middle = middle = nanmean(close, axis=0)
      out.upper = middle + difference
      out.lower = middle - difference
  
imports: from __future__ import division
  from numpy import abs, average, clip, diff, dstack, inf
  from numexpr import evaluate
  from zipline.pipeline.data import EquityPricing
  from zipline.pipeline.factors import CustomFactor
  from zipline.pipeline.mixins import SingleInputMixin
  from zipline.utils.input_validation import expect_bounded
  from zipline.utils.math_utils import nanargmax, nanargmin, nanmax, nanmean, nanstd, nanmin
  from zipline.utils.numpy_utils import rolling_window
  from .basic import exponential_weights
  from .basic import LinearWeightedMovingAverage, MaxDrawdown, SimpleMovingAverage, VWAP, WeightedAverageValue
label_desc: Use image node_id 1 for calling the BollingerBands obj's underlying member method code with example usage: obj.compute(today, assets, out, close, k) without return types