code: def order(self,
                asset,
                amount,
                limit_price=None,
                stop_price=None,
                style=None):
          
          if not self._can_order_asset(asset):
              return None
  
          amount, style = self._calculate_order(asset, amount,
                                                limit_price, stop_price, style)
          return self.blotter.order(asset, amount, style)
docs: Place an order.
  
          Parameters
          ----------
          asset : Asset
              The asset that this order is for.
          amount : int
              The amount of shares to order. If ``amount`` is positive, this is
              the number of shares to buy or cover. If ``amount`` is negative,
              this is the number of shares to sell or short.
          limit_price : float, optional
              The limit price for the order.
          stop_price : float, optional
              The stop price for the order.
          style : ExecutionStyle, optional
              The execution style for the order.
  
          Returns
          -------
          order_id : str or None
              The unique identifier for this order, or None if no order was
              placed.
  
          Notes
          -----
          The ``limit_price`` and ``stop_price`` arguments provide shorthands for
          passing common execution styles. Passing ``limit_price=N`` is
          equivalent to ``style=LimitOrder(N)``. Similarly, passing
          ``stop_price=M`` is equivalent to ``style=StopOrder(M)``, and passing
          ``limit_price=N`` and ``stop_price=M`` is equivalent to
          ``style=StopLimitOrder(N, M)``. It is an error to pass both a ``style``
          and ``limit_price`` or ``stop_price``.
  
          See Also
          --------
          :class:`zipline.finance.execution.ExecutionStyle`
          :func:`zipline.api.order_value`
          :func:`zipline.api.order_percent`