def placeTargetOrder(trade, isMarketOrder = False):
   oip = OrderInputParams(trade.tradingSymbol)
   oip.direction = Direction.SHORT if trade.direction == Direction.LONG else Direction.LONG
   oip.productType = trade.productType
   oip.orderType = OrderType.MARKET if isMarketOrder == True else OrderType.LIMIT
   oip.price = 0 if isMarketOrder == True else trade.target
   oip.qty = trade.qty
   try:
     trade.targetOrder = TradeManager.getOrderManager().placeOrder(oip)
   except Exception as e:
     logging.exrror('TradeManager: Failed to place Target order for tradeID %s: Error => %s', trade.tradeID, str(e))
     return False
   logging.info('TradeManager: Successfully placed Target order %s for tradeID %s', trade.targetOrder.orderId, trade.tradeID)
   return True
  def executeTrade(trade):
    logging.info('TradeManager: Execute trade called for %s', trade)
    trade.initialStopLoss = trade.stopLoss
    # Create order input params object and place order
    oip = OrderInputParams(trade.tradingSymbol)
    oip.direction = trade.direction
    oip.productType = trade.productType
    oip.orderType = OrderType.MARKET if trade.placeMarketOrder == True else OrderType.LIMIT
    oip.price = trade.requestedEntry
    oip.qty = trade.qty
    try:
      trade.entryOrder = TradeManager.getOrderManager().placeOrder(oip)
    except Exception as e:
      logging.exrror('TradeManager: Execute trade failed for tradeID %s: Error => %s', trade.tradeID, str(e))
      return False

    logging.info('TradeManager: Execute trade successful for %s and entryOrder %s', trade, trade.entryOrder)
    return True