Example #1
0
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount
            # automatically retrive qty precision
            round_lot = str(self.market_info[self.pair()]["RoundLot"])
            price_increment = str(
                self.market_info[self.pair()]["MinPriceIncrement"])
            price_precision = abs(Decimal(price_increment).as_tuple().exponent)
            order_qty_precision = abs(Decimal(round_lot).as_tuple().exponent)
            rounded_amount = round(Wad.__float__(amount), order_qty_precision)
            rounded_price = round(Wad.__float__(new_order_to_be_placed.price),
                                  price_precision)

            order_id = self.erisx_api.place_order(
                pair=self.pair().upper(),
                is_sell=new_order_to_be_placed.is_sell,
                price=rounded_price,
                amount=rounded_amount)

            # check that order was placed properly
            if len(order_id) > 0:
                placed_order = Order(str(order_id), int(time.time()),
                                     self.pair(),
                                     new_order_to_be_placed.is_sell,
                                     new_order_to_be_placed.price, amount)

                self.orders.append(placed_order)
                return placed_order
            else:
                return None
Example #2
0
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount
            order_id = self.dydx_api.place_order(pair=self.pair().upper(),
                                                 is_sell=new_order_to_be_placed.is_sell,
                                                 price=Wad.__float__(new_order_to_be_placed.price),
                                                 amount=Wad.__float__(amount))

            return Order(str(order_id), int(time.time()), self.pair(), new_order_to_be_placed.is_sell,
                         new_order_to_be_placed.price, amount)
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount
            
            # Convert wad to float as Bitso limits amount decimal places to 8, and price to 2
            float_price = round(Wad.__float__(new_order_to_be_placed.price), 2)
            float_amount = round(Wad.__float__(amount), 8)
            
            side = "sell" if new_order_to_be_placed.is_sell == True else "buy"
            order_id = self.bitso_api.place_order(book=self.pair(),
                                                 side=side,
                                                 price=float_price,
                                                 amount=float_amount)

            return Order(str(order_id), int(time.time()), self.pair(), new_order_to_be_placed.is_sell, new_order_to_be_placed.price, amount)
Example #4
0
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount
            # automatically retrive qty precision
            round_lot = str(self.market_info[self.pair()]["RoundLot"])
            price_increment = str(self.market_info[self.pair()]["MinPriceIncrement"])
            order_qty_precision = abs(Decimal(round_lot).as_tuple().exponent)
            price_precision = abs(Decimal(price_increment).as_tuple().exponent)

            order_id = self.erisx_api.place_order(pair=self.pair().upper(),
                                                  is_sell=new_order_to_be_placed.is_sell,
                                                  price=round(Wad.__float__(new_order_to_be_placed.price), price_precision),
                                                  amount=round(Wad.__float__(amount), order_qty_precision))

            return Order(str(order_id), int(time.time()), self.pair(), new_order_to_be_placed.is_sell,
                         new_order_to_be_placed.price, amount)
Example #5
0
    def place_orders(self, new_orders):
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount
            # automatically retrive qty precision
            round_lot = str(self.market_info[self.pair()]["RoundLot"])
            price_increment = str(self.market_info[self.pair()]["MinPriceIncrement"])
            price_precision = abs(Decimal(price_increment).as_tuple().exponent)
            order_qty_precision = abs(Decimal(round_lot).as_tuple().exponent)
            rounded_amount = round(Wad.__float__(amount), order_qty_precision)

            order_id = self.erisx_api.place_order(pair=self.pair().upper(),
                                                  is_sell=new_order_to_be_placed.is_sell,
                                                  price=round(Wad.__float__(new_order_to_be_placed.price), price_precision),
                                                  amount=rounded_amount)

            return Order(str(order_id), int(time.time()), self.pair(), new_order_to_be_placed.is_sell,
                         new_order_to_be_placed.price, amount)

        for new_order in new_orders:
            # check if new order is greater than exchange minimums
            amount = new_order.pay_amount if new_order.is_sell else new_order.buy_amount
            side = 'Sell' if new_order.is_sell else 'Buy'
            round_lot = str(self.market_info[self.pair()]["RoundLot"])
            order_qty_precision = abs(Decimal(round_lot).as_tuple().exponent)
            min_amount = float(self.market_info[self.pair()]["MinTradeVol"])
            rounded_amount = round(Wad.__float__(amount), order_qty_precision)

            if min_amount < rounded_amount:
                self.order_book_manager.place_order(lambda new_order=new_order: place_order_function(new_order))
            else:
                logging.info(f"New {side} Order below size minimum of {min_amount}. Order of amount {amount} ignored.")
 def _should_place_order(self, new_order: dict) -> bool:
     amount = new_order.pay_amount if new_order.is_sell else new_order.buy_amount
     decimal_exponent = int(
         self.market_info[self.pair().upper()]['baseCurrency']['decimals'])
     minimumOrderSize = float(
         self.market_info[self.pair().upper()]['minimumOrderSize'])
     converted_amount = Wad.__float__(amount) * 10**decimal_exponent
     return True if converted_amount > minimumOrderSize else False
        def place_order_function(new_order_to_be_placed):
            amount = new_order_to_be_placed.pay_amount if new_order_to_be_placed.is_sell else new_order_to_be_placed.buy_amount

            # Convert wad to float as Bitso limits decimal places to 8
            float_price = round(Wad.__float__(new_order_to_be_placed.price), 8)
            float_amount = round(Wad.__float__(amount), 8)

            side = "sell" if new_order_to_be_placed.is_sell == True else "buy"
            order_id = self.bitso_api.place_order(book=self.pair(),
                                                  side=side,
                                                  price=float_price,
                                                  amount=float_amount)

            timestamp = datetime.now(tz=timezone.utc).isoformat()

            return Order(str(order_id), timestamp, self.pair(),
                         new_order_to_be_placed.is_sell,
                         new_order_to_be_placed.price, amount)
Example #8
0
 def _should_place_order(self, new_order: dict) -> bool:
     amount = new_order.pay_amount if new_order.is_sell else new_order.buy_amount
     minimumOrderSize = float(self.market_info[self.pair().upper()]['minimumOrderSize'])
     converted_minimum = minimumOrderSize / 10 ** 17
     return True if Wad.__float__(amount) > converted_minimum else False