docstr: Mark the order with order_id as 'held'. Held is functionally similar
  to 'open'. When a fill (full or partial) arrives, the status
  will automatically change back to open/filled as necessary.
docstr_tok: ["Mark","the","order","with","order_id","as","'held","'",".","Held","is","functionally","similar","to","'open","'",".","When","a","fill","(","full","or","partial",")","arrives",",","the","status","will","automatically","change","back","to","open\/filled","as","necessary","."]
code: def hold(self, order_id, reason=""):
      """
      Mark the order with order_id as 'held'. Held is functionally similar
      to 'open'. When a fill (full or partial) arrives, the status
      will automatically change back to open/filled as necessary.
      """
      if order_id not in self.orders:
          return
  
      cur_order = self.orders[order_id]
      if cur_order.open:
          if cur_order in self.new_orders:
              self.new_orders.remove(cur_order)
          cur_order.hold(reason=reason)
          cur_order.dt = self.current_dt
          # we want this order's new status to be relayed out
          # along with newly placed orders.
          self.new_orders.append(cur_order)
  
imports: from logbook import Logger
  from collections import defaultdict
  from copy import copy
  from six import iteritems
  from zipline.assets import Equity, Future, Asset
  from .blotter import Blotter
  from zipline.extensions import register
  from zipline.finance.order import Order
  from zipline.finance.slippage import DEFAULT_FUTURE_VOLUME_SLIPPAGE_BAR_LIMIT, VolatilityVolumeShare, FixedBasisPointsSlippage
  from zipline.finance.commission import DEFAULT_PER_CONTRACT_COST, FUTURE_EXCHANGE_FEES_BY_SYMBOL, PerContract, PerShare
  from zipline.utils.input_validation import expect_types
label_desc: Use image node_id 8 for calling the SimulationBlotter obj's underlying member method code with example usage: obj.hold(order_id, reason) without return types