code: def testPPO(self):
      barDs = self.__loadBarDS()
      self.assertAmountsAreEqual(
          indicator.PPO(
              barDs.getCloseDataSeries(), 252, 2, 3, talib.MA_Type.SMA
          )[2],
          1.10264,
      )
      self.assertAmountsAreEqual(
          indicator.PPO(
              barDs.getCloseDataSeries(), 252, 2, 3, talib.MA_Type.SMA
          )[3],
          -0.02813,
      )
      self.assertAmountsAreEqual(
          indicator.PPO(
              barDs.getCloseDataSeries(), 252, 2, 3, talib.MA_Type.SMA
          )[-1],
          -0.21191,
      )
  
imports: import datetime
  import talib
  from six.moves import xrange
  from .None import common
  from pyalgotrade.talibext import indicator
  from pyalgotrade import bar
  from pyalgotrade import dataseries
  from pyalgotrade.dataseries import bards
label_desc: Use image node_id 40 for calling the TestCase obj's underlying member method code with example usage: obj.testPPO() without return types