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)
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)
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)
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)