def setTradeToCompleted(trade, exit, exitReason = None): trade.tradeState = TradeState.COMPLETED trade.exit = exit trade.exitReason = exitReason if trade.exitReason == None else trade.exitReason trade.endTimestamp = Utils.getEpoch() trade = Utils.calculateTradePnl(trade) logging.info('TradeManager: setTradeToCompleted strategy = %s, symbol = %s, qty = %d, entry = %f, exit = %f, pnl = %f, exit reason = %s', trade.strategy, trade.tradingSymbol, trade.filledQty, trade.entry, trade.exit, trade.pnl, trade.exitReason)
def trackEntryOrder(trade): if trade.tradeState != TradeState.ACTIVE: return if trade.entryOrder == None: return if trade.entryOrder.orderStatus == OrderStatus.CANCELLED or trade.entryOrder.orderStatus == OrderStatus.REJECTED: trade.tradeState = TradeState.CANCELLED trade.filledQty = trade.entryOrder.filledQty if trade.filledQty > 0: trade.entry = trade.entryOrder.averagePrice # Update the current market price and calculate pnl trade.cmp = TradeManager.symbolToCMPMap[trade.tradingSymbol] Utils.calculateTradePnl(trade)