code: def test_ichimoku_kinko_hyo(self):
      window_length = 52
      today = pd.Timestamp("2014", tz="utc")
      nassets = 5
      assets = pd.Index(np.arange(nassets))
      days_col = np.arange(window_length)[:, np.newaxis]
      highs = np.arange(nassets) + 2 + days_col
      closes = np.arange(nassets) + 1 + days_col
      lows = np.arange(nassets) + days_col
  
      tenkan_sen_length = 9
      kijun_sen_length = 26
      chikou_span_length = 26
      ichimoku_kinko_hyo = IchimokuKinkoHyo(
          window_length=window_length,
          tenkan_sen_length=tenkan_sen_length,
          kijun_sen_length=kijun_sen_length,
          chikou_span_length=chikou_span_length,
      )
  
      dtype = [
          ("tenkan_sen", "f8"),
          ("kijun_sen", "f8"),
          ("senkou_span_a", "f8"),
          ("senkou_span_b", "f8"),
          ("chikou_span", "f8"),
      ]
      out = np.recarray(
          shape=(nassets,),
          dtype=dtype,
          buf=np.empty(shape=(nassets,), dtype=dtype),
      )
      ichimoku_kinko_hyo.compute(
          today,
          assets,
          out,
          highs,
          lows,
          closes,
          tenkan_sen_length,
          kijun_sen_length,
          chikou_span_length,
      )
  
      expected_tenkan_sen = np.array(
          [
              (53 + 43) / 2,
              (54 + 44) / 2,
              (55 + 45) / 2,
              (56 + 46) / 2,
              (57 + 47) / 2,
          ]
      )
      expected_kijun_sen = np.array(
          [
              (53 + 26) / 2,
              (54 + 27) / 2,
              (55 + 28) / 2,
              (56 + 29) / 2,
              (57 + 30) / 2,
          ]
      )
      expected_senkou_span_a = (
          expected_tenkan_sen + expected_kijun_sen
      ) / 2
      expected_senkou_span_b = np.array(
          [
              (53 + 0) / 2,
              (54 + 1) / 2,
              (55 + 2) / 2,
              (56 + 3) / 2,
              (57 + 4) / 2,
          ]
      )
      expected_chikou_span = np.array(
          [
              27.0,
              28.0,
              29.0,
              30.0,
              31.0,
          ]
      )
  
      assert_equal(
          out.tenkan_sen,
          expected_tenkan_sen,
          msg="tenkan_sen",
      )
      assert_equal(
          out.kijun_sen,
          expected_kijun_sen,
          msg="kijun_sen",
      )
      assert_equal(
          out.senkou_span_a,
          expected_senkou_span_a,
          msg="senkou_span_a",
      )
      assert_equal(
          out.senkou_span_b,
          expected_senkou_span_b,
          msg="senkou_span_b",
      )
      assert_equal(
          out.chikou_span,
          expected_chikou_span,
          msg="chikou_span",
      )
  
imports: from __future__ import division
  from nose_parameterized import parameterized
  from six.moves import range
  import numpy
  import pandas
  import talib
  from numpy.random import RandomState
  from zipline.lib.adjusted_array import AdjustedArray
  from zipline.pipeline.data import USEquityPricing
  from zipline.pipeline.factors import BollingerBands, Aroon, FastStochasticOscillator, IchimokuKinkoHyo, LinearWeightedMovingAverage, RateOfChangePercentage, TrueRange, MovingAverageConvergenceDivergenceSignal, AnnualizedVolatility, RSI
  from zipline.testing import check_allclose, parameter_space
  from zipline.testing.fixtures import ZiplineTestCase
  from zipline.testing.predicates import assert_equal
  from .base import BaseUSEquityPipelineTestCase
label_desc: Use image node_id 1 for calling the IchimokuKinkoHyoTestCase obj's underlying member method code with example usage: obj.test_ichimoku_kinko_hyo() without return types