コード例 #1
0
 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.')
コード例 #2
0
 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())
コード例 #3
0
    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)
コード例 #4
0
 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())
コード例 #5
0
 def test_make_stop_order_with_no_qty(self):
     order = Order(order_type='Stop', side='Sell', stop_px=1000)
     self.assertFalse(order.is_valid())
コード例 #6
0
 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())
コード例 #7
0
 def test_make_stop_order_without_stop_px(self):
     order = Order(order_type='Stop', qty=228, side='Sell')
     self.assertFalse(order.is_valid())
コード例 #8
0
 def test_make_correct_stop_order(self):
     order = Order(order_type='Stop', qty=228, side='Sell', stop_px=1000)
     self.assertTrue(order.is_valid())
コード例 #9
0
 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())
コード例 #10
0
 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())
コード例 #11
0
 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())
コード例 #12
0
 def test_make_limit_order_without_price(self):
     order = Order(order_type='Limit', qty=228, side='Buy')
     self.assertFalse(order.is_valid())
コード例 #13
0
 def test_make_limit_order_with_stop_px(self):
     order = Order(order_type='Limit', qty=228, stop_px=1000)
     self.assertFalse(order.is_valid())
コード例 #14
0
 def test_make_order_with_no_symbol(self):
     order = Order(symbol=None, qty=228, side='Buy', price=1000)
     self.assertFalse(order.is_valid())
コード例 #15
0
 def test_make_empty_order(self):
     order = Order()
     self.assertFalse(order.is_valid())