class_docstr: A Bitstamp live broker.
  
  :param clientId: Client id.
  :type clientId: string.
  :param key: API key.
  :type key: string.
  :param secret: API secret.
  :type secret: string.
  
  
  .. note::
      * Only limit orders are supported.
      * Orders are automatically set as **goodTillCanceled=True** and  **allOrNone=False**.
      * BUY_TO_COVER orders are mapped to BUY orders.
      * SELL_SHORT orders are mapped to SELL orders.
      * API access permissions should include:
  
        * Account balance
        * Open orders
        * Buy limit order
        * User transactions
        * Cancel order
        * Sell limit order
code: def cancelOrder(self, order):
      activeOrder = self.__activeOrders.get(order.getId())
      if activeOrder is None:
          raise Exception("The order is not active anymore")
      if activeOrder.isFilled():
          raise Exception(
              "Can't cancel order that has already been filled"
          )
  
      self.__httpClient.cancelOrder(order.getId())
      self._unregisterOrder(order)
      order.switchState(broker.Order.State.CANCELED)
  
      # Update cash and shares.
      self.refreshAccountBalance()
  
      # Notify that the order was canceled.
      self.notifyOrderEvent(
          broker.OrderEvent(
              order,
              broker.OrderEvent.Type.CANCELED,
              "User requested cancellation",
          )
      )
  
imports: import threading
  import time
  from six.moves import queue
  from pyalgotrade import broker
  from pyalgotrade.bitstamp import httpclient
  from pyalgotrade.bitstamp import common
label_desc: Use image node_id 25 for calling the LiveBroker obj's underlying member method code with example usage: obj.cancelOrder(order) without return types