'Place an order by desired value rather than desired number of
shares.
Parameters
asset : Asset
The asset that this order is for.
value : float
If the requested asset exists, the requested value is
divided by its price to imply the number of shares to transact.
If the Asset being ordered is a Future, the \'value\' calculated
is actually the exposure, as Futures have no \'value\'.
value > 0 :: Buy/Cover
value < 0 :: Sell/Short
limit_price : float, optional
The limit price for the order.
stop_price : float, optional
The stop price for the order.
style : ExecutionStyle
The execution style for the order.
Returns
order_id : str
The unique identifier for this order.
Notes
See :func:`zipline.api.order` for more information about
``limit_price``, ``stop_price``, and ``style``
See Also
:class:`zipline.finance.execution.ExecutionStyle`
:func:`zipline.api.order`
:func:`zipline.api.order_percent`'

@api_method
@disallowed_in_before_trading_start(OrderInBeforeTradingStart())
def order_value(self, asset, value, limit_price=None, stop_price=None, style=None):

    if (not self._can_order_asset(asset)):
        return None
    amount = self._calculate_order_value_amount(asset, value)
    return self.order(asset, amount, limit_price=limit_price, stop_price=stop_price, style=style)
