Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)