Exemple #1
0
 def _update_type_from_raw(self, raw_order):
     try:
         self.exchange_order_type = TradeOrderType(
             raw_order[ExchangeConstantsOrderColumns.TYPE.value])
     except ValueError:
         self.exchange_order_type = TradeOrderType.UNKNOWN
     self.side, self.order_type = parse_order_type(raw_order)
Exemple #2
0
def parse_order_type(raw_order):
    try:
        side: TradeOrderSide = TradeOrderSide(
            raw_order[ExchangeConstantsOrderColumns.SIDE.value])
        order_type: TradeOrderType = TradeOrderType(
            raw_order[ExchangeConstantsOrderColumns.TYPE.value])

        if side == TradeOrderSide.BUY:
            if order_type == TradeOrderType.LIMIT or order_type == TradeOrderType.LIMIT_MAKER:
                order_type = TraderOrderType.BUY_LIMIT
            elif order_type == TradeOrderType.MARKET:
                order_type = TraderOrderType.BUY_MARKET
            else:
                order_type = _get_sell_and_buy_types(order_type)
        elif side == TradeOrderSide.SELL:
            if order_type == TradeOrderType.LIMIT or order_type == TradeOrderType.LIMIT_MAKER:
                order_type = TraderOrderType.SELL_LIMIT
            elif order_type == TradeOrderType.MARKET:
                order_type = TraderOrderType.SELL_MARKET
            else:
                order_type = _get_sell_and_buy_types(order_type)
        return side, order_type
    except KeyError:
        get_logger(
            Order.__class__.__name__).error("Failed to parse order type")
        return None, None
Exemple #3
0
def parse_order_type(raw_order):
    try:
        side: TradeOrderSide = TradeOrderSide(raw_order[ExchangeConstantsOrderColumns.SIDE.value])
        order_type: TradeOrderType = TradeOrderType.UNKNOWN
        parsed_order_type: TraderOrderType = TraderOrderType.UNKNOWN
        try:
            order_type = TradeOrderType(raw_order[ExchangeConstantsOrderColumns.TYPE.value])
        except ValueError as e:
            if raw_order[ExchangeConstantsOrderColumns.TYPE.value] is None:
                # No order type info: use unknown order type
                return side, TraderOrderType.UNKNOWN
            else:
                # Incompatible order type info: raise error
                raise e

        if order_type == TradeOrderType.UNKNOWN:
            parsed_order_type = TraderOrderType.UNKNOWN
        elif side == TradeOrderSide.BUY:
            if order_type == TradeOrderType.LIMIT or order_type == TradeOrderType.LIMIT_MAKER:
                parsed_order_type = TraderOrderType.BUY_LIMIT
            elif order_type == TradeOrderType.MARKET:
                parsed_order_type = TraderOrderType.BUY_MARKET
            else:
                parsed_order_type = _get_sell_and_buy_types(order_type)
        elif side == TradeOrderSide.SELL:
            if order_type == TradeOrderType.LIMIT or order_type == TradeOrderType.LIMIT_MAKER:
                parsed_order_type = TraderOrderType.SELL_LIMIT
            elif order_type == TradeOrderType.MARKET:
                parsed_order_type = TraderOrderType.SELL_MARKET
            else:
                parsed_order_type = _get_sell_and_buy_types(order_type)
        return side, parsed_order_type
    except (KeyError, ValueError):
        return None, None
Exemple #4
0
 def __update_type_from_raw(self, raw_order):
     self.side: TradeOrderSide = TradeOrderSide(
         raw_order[ExchangeConstantsOrderColumns.SIDE.value])
     order_type: TradeOrderType = TradeOrderType(
         raw_order[ExchangeConstantsOrderColumns.TYPE.value])
     if self.side == TradeOrderSide.BUY:
         if order_type == TradeOrderType.LIMIT:
             self.order_type = TraderOrderType.BUY_LIMIT
         elif order_type == TradeOrderType.MARKET:
             self.order_type = TraderOrderType.BUY_MARKET
     elif self.side == TradeOrderSide.SELL:
         if order_type == TradeOrderType.LIMIT:
             self.order_type = TraderOrderType.SELL_LIMIT
         elif order_type == TradeOrderType.MARKET:
             self.order_type = TraderOrderType.SELL_MARKET