class_docstr: Base class for slippage models which compute a simulated price impact
  according to a history lookback.
code: def process_order(self, data, order):
      if order.open_amount == 0:
          return None, None
  
      minute_data = data.current(order.asset, ["volume", "high", "low"])
      mean_volume, volatility = self._get_window_data(
          data, order.asset, 20
      )
  
      # Price to use is the average of the minute bar's open and close.
      price = np.mean([minute_data["high"], minute_data["low"]])
  
      volume = minute_data["volume"]
      if not volume:
          return None, None
  
      txn_volume = int(
          min(self.get_txn_volume(data, order), abs(order.open_amount))
      )
  
      # If the computed transaction volume is zero or a decimal value, 'int'
      # will round it down to zero. In that case just bail.
      if txn_volume == 0:
          return None, None
  
      if mean_volume == 0 or np.isnan(volatility):
          # If this is the first day the contract exists or there is no
          # volume history, default to a conservative estimate of impact.
          simulated_impact = (
              price * self.NO_DATA_VOLATILITY_SLIPPAGE_IMPACT
          )
      else:
          simulated_impact = self.get_simulated_impact(
              order=order,
              current_price=price,
              current_volume=volume,
              txn_volume=txn_volume,
              mean_volume=mean_volume,
              volatility=volatility,
          )
  
      impacted_price = price + math.copysign(
          simulated_impact, order.direction
      )
  
      if fill_price_worse_than_limit_price(impacted_price, order):
          return None, None
  
      return impacted_price, math.copysign(txn_volume, order.direction)
  
imports: from __future__ import division
  from abc import abstractmethod
  import math
  import numpy
  from pandas import isnull
  from six import with_metaclass
  from toolz import merge
  from zipline.assets import Equity, Future
  from zipline.errors import HistoryWindowStartsBeforeData
  from zipline.finance.constants import ROOT_SYMBOL_TO_ETA
  from zipline.finance.shared import AllowedAssetMarker, FinancialModelMeta
  from zipline.finance.transaction import create_transaction
  from zipline.utils.cache import ExpiringCache
  from zipline.utils.dummy import DummyMapping
  from zipline.utils.input_validation import expect_bounded, expect_strictly_bounded
label_desc: Use image node_id 4 for calling the MarketImpactBase obj's underlying member method code with example usage: obj.process_order(data, order) and returns: impacted_price,  math, None,  None, None,  None, None,  None, None,  None