def log_commission(self, trade: Trade, fill: Fill, comm_report: CommissionReport, reason: str): """ Get trades that have all CommissionReport filled and log them. """ # bug in ib_insync sometimes causes trade to have fills for # unrelated transactions, permId uniquely identifies order comms = [fill.commissionReport for fill in trade.fills if fill.commissionReport.execId != '' and fill.execution.permId == trade.order.permId] fills = [fill for fill in trade.fills if fill.execution.permId == trade.order.permId] if trade.isDone() and (len(comms) == len(fills)): self.log_trade(trade, comms, reason)
def log_commission(self, trade: Trade, fill: Fill, comm_report: CommissionReport, reason: str): """ Get trades that have all CommissionReport filled and log them. """ log.debug(f'logging commission for trade: {trade}') log.debug(f'trade isDone: {trade.isDone()}') # bug in ib_insync sometimes causes trade to have fills for # unrelated transactions comms = [ fill.commissionReport for fill in trade.fills if fill.commissionReport.execId != '' and fill.contract == trade.contract ] log.debug(f'comms: {comms}') log.debug( f'len(comms): {len(comms)}, len(trade.fills): {len(trade.fills)}') if trade.isDone() and (len(comms) == len(trade.fills)): self.log_trade(trade, comms, reason)