예제 #1
0
    def test_get_fee(self):
        params = {
            'test': True,
            'secure': True,
            'amount': 1,
            'date due': None,
            'type': 'limit',
            'take profit': 3,
            'limit': 2,
            'stop loss': 1
        }

        long1 = Long(pair='ETHUSDT', params=params)
        long1.open()

        self.assertAlmostEqual(long1.get_profit(3), 0.995)
        self.assertAlmostEqual(long1.get_profit(1), -1.005)

        while long1.status != OPEN:
            long1.update()

        self.assertAlmostEqual(long1.get_fee(1), 0.003)

        long1.close(close_params={'limit': 2.5})

        self.assertAlmostEqual(long1.get_fee(), 0.0045)
        self.assertAlmostEqual(long1.get_fee(1), 0.0045)
예제 #2
0
    def test_close(self):
        params = {
            'test': True,
            'secure': True,
            'amount': 1,
            'date due': None,
            'type': 'limit',
            'take profit': 3,
            'limit': 2,
            'stop loss': 1
        }

        long1 = Long(pair='ETHUSDT', params=params)
        long1.open()

        while long1.status != OPEN:
            long1.update()

        # can't close without limit
        with self.assertRaises(ValueError):
            long1.close(close_params={})

        self.assertEqual(long1.close(limit=4), 0)
        self.assertEqual(long1.close(limit=4), -1)

        test1 = False
        test2 = False

        while not test1 or not test2:

            long2 = Long(pair='ETHUSDT', params=params)
            long2.open()

            if long2.status == WAIT_OPEN:
                res = long2.close(limit=4)

                if res == 0 and not test1:
                    # after closing waiting to open position it cancels instead
                    self.assertIn(long2.status, [CLOSED, CANCELED])
                    self.assertFalse(long2.is_secure)
                    test1 = True
                    print('canceled')
                if res == -1 and not test2:
                    # after closing waiting to open position it cancels instead
                    self.assertEqual(long2.status, OPEN)
                    test2 = True
                    print('opened')

        self.assertEqual(long1.status, CLOSED)
예제 #3
0
    def test_get_profit(self):
        params = {
            'test': True,
            'secure': True,
            'amount': 1,
            'date due': None,
            'type': 'limit',
            'take profit': 3,
            'limit': 2,
            'stop loss': 1
        }

        long1 = Long(pair='ETHUSDT', params=params)
        long1.open()

        self.assertAlmostEqual(long1.get_profit(3), 0.995)
        self.assertAlmostEqual(long1.get_profit(1), -1)

        while long1.status != OPEN:
            long1.update()

        long1.close(2.5)

        self.assertAlmostEqual(long1.get_profit(3), .4955, 3)
        self.assertAlmostEqual(long1.get_profit(1), .4955, 3)

        params['amount'] = 10
        params['limit'] = 500
        params['stop loss'] = 200
        params['take profit'] = 600

        long2 = Long(pair='BTCUSDT', params=params)
        long2.open()

        while long2.status != OPEN:
            long2.update()

        long2.close(250)

        self.assertAlmostEqual(long2.get_profit(), -2507.5)
예제 #4
0
    def test_get_profit_percent(self):

        params = {
            'test': True,
            'secure': True,
            'amount': 1,
            'date due': None,
            'type': 'limit',
            'take profit': 3,
            'limit': 2,
            'stop loss': 1
        }

        long1 = Long(pair='ETHUSDT', params=params)
        long1.open()

        while long1.status != OPEN:
            long1.update()

        self.assertAlmostEqual(long1.get_profit_percent(10), 399.4)

        long1.close(limit=5)
        self.assertAlmostEqual(long1.get_profit_percent(10), -25.175)