def add_order(self, order: Order) -> None: if order.is_valid(): self.orders.append(order) self.logger.info(f'New order: {order.order_type} {order.side} {order.qty} by ' f'{order.price or order.stop_px}') else: raise ValueError('Order is not valid.')
def test_add_full_order(self): order = Order(order_type='Limit', qty=228, side='Buy', price=Decimal(1000), stop_px=None, hidden=True, close=False, reduce_only=False, passive=True) self.assertTrue(order.is_valid())
def add_trailing_order(self, order: Order, offset: int) -> None: """ :param order: Order instance :param offset: value in percents, distance from extremum """ if order.is_valid(): order.is_trailing = True tick_size = self.exchange.conn.get_tick_size() test = 'testnet' in self.exchange.conn.base_url order.tracker = TrailingShell(order=order, offset=offset, tick_size=tick_size, test=test) order.tracker.start_trailing(initial_price=self.exchange.get_last_price_ws()) self.orders.append(order)
def test_make_close_stop_order_with_no_qty(self): order = Order(order_type='Stop', side='Sell', stop_px=1000, close=True) self.assertTrue(order.is_valid())
def test_make_stop_order_with_no_qty(self): order = Order(order_type='Stop', side='Sell', stop_px=1000) self.assertFalse(order.is_valid())
def test_make_stop_order_with_negative_stop_px(self): order = Order(order_type='Stop', qty=228, side='Sell', stop_px=-1000) self.assertFalse(order.is_valid())
def test_make_stop_order_without_stop_px(self): order = Order(order_type='Stop', qty=228, side='Sell') self.assertFalse(order.is_valid())
def test_make_correct_stop_order(self): order = Order(order_type='Stop', qty=228, side='Sell', stop_px=1000) self.assertTrue(order.is_valid())
def test_make_order_with_bad_order_type(self): order = Order(order_type='Bad type', qty=228, side='Buy', price=1000) self.assertFalse(order.is_valid())
def test_make_limit_order_with_bad_side(self): order = Order(order_type='Limit', qty=228, side='Bad side', price=1000) self.assertFalse(order.is_valid())
def test_make_limit_order_with_negative_price(self): order = Order(order_type='Limit', qty=228, side='Buy', price=-1000) self.assertFalse(order.is_valid())
def test_make_limit_order_without_price(self): order = Order(order_type='Limit', qty=228, side='Buy') self.assertFalse(order.is_valid())
def test_make_limit_order_with_stop_px(self): order = Order(order_type='Limit', qty=228, stop_px=1000) self.assertFalse(order.is_valid())
def test_make_order_with_no_symbol(self): order = Order(symbol=None, qty=228, side='Buy', price=1000) self.assertFalse(order.is_valid())
def test_make_empty_order(self): order = Order() self.assertFalse(order.is_valid())