class_docstr: Compute the various metrics for the Ichimoku Kinko Hyo (Ichimoku Cloud).
  http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ichimoku_cloud
  
  **Default Inputs:** :data:`zipline.pipeline.data.EquityPricing.high`,                         :data:`zipline.pipeline.data.EquityPricing.low`,                         :data:`zipline.pipeline.data.EquityPricing.close`
  
  **Default Window Length:** 52
  
  Parameters
  ----------
  window_length : int > 0
      The length the the window for the senkou span b.
  tenkan_sen_length : int >= 0, <= window_length
      The length of the window for the tenkan-sen.
  kijun_sen_length : int >= 0, <= window_length
      The length of the window for the kijou-sen.
  chikou_span_length : int >= 0, <= window_length
      The lag for the chikou span.
code: def _validate(self):
      super(IchimokuKinkoHyo, self)._validate()
      for k, v in self.params.items():
          if v > self.window_length:
              raise ValueError(
                  "%s must be <= the window_length: %s > %s"
                  % (
                      k,
                      v,
                      self.window_length,
                  ),
              )
  
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 IchimokuKinkoHyo obj's underlying member method code with example usage: obj._validate() without return types