def __init__(self,
              trading_pairs: List[str],
              wallet_private_key: str,
              ethereum_rpc_url: str,  # not used, but left in place to be consistent with other gateway connectors
              trading_required: bool = True
              ):
     """
     :param trading_pairs: a list of trading pairs
     :param wallet_private_key: a private key for eth wallet
     :param trading_required: Whether actual trading is needed.
     """
     ExchangeBase.__init__(self)
     PerpetualTrading.__init__(self)
     self._trading_pairs = trading_pairs
     self._wallet_private_key = wallet_private_key
     self._trading_required = trading_required
     self._ev_loop = asyncio.get_event_loop()
     self._shared_client = None
     self._last_poll_timestamp = 0.0
     self._last_balance_poll_timestamp = time.time()
     self._in_flight_orders = {}
     self._allowances = {}
     self._status_polling_task = None
     self._auto_approve_task = None
     self._real_time_balance_update = False
     self._poll_notifier = None
     self._funding_payment_span = [120, 120]
     self._fundingPayment = {}
     self._budget_checker = PerpetualBudgetChecker(self)
Exemple #2
0
 def __init__(
     self,
     trade_fee_schema: Optional[TradeFeeSchema] = None,
     buy_collateral_token: Optional[str] = None,
     sell_collateral_token: Optional[str] = None,
 ):
     MockPaperExchange.__init__(self, trade_fee_schema)
     PerpetualTrading.__init__(self)
     self._budget_checker = PerpetualBudgetChecker(exchange=self)
     self._funding_payment_span = [0, 10]
     self._buy_collateral_token = buy_collateral_token
     self._sell_collateral_token = sell_collateral_token
Exemple #3
0
 def test_funding_info(self):
     """
     Test getting funding infos by manually adding a funding info to the class member
     """
     pt: PerpetualTrading = PerpetualTrading()
     fInfo: FundingInfo = FundingInfo("pair1", Decimal(1), Decimal(2), 1000, Decimal(0.1))
     pt._funding_info["pair1"] = fInfo
     self.assertEqual(pt.get_funding_info("pair1"), fInfo)
Exemple #4
0
 def test_position_key(self):
     pt: PerpetualTrading = PerpetualTrading()
     pt.set_position_mode(PositionMode.ONEWAY)
     self.assertEqual(pt.position_key("market1"), "market1")
     self.assertEqual(pt.position_key("market1", PositionSide.LONG), "market1")
     pt.set_position_mode(PositionMode.HEDGE)
     self.assertEqual(pt.position_key("market1", PositionSide.LONG), "market1LONG")
     self.assertEqual(pt.position_key("market1", PositionSide.SHORT), "market1SHORT")
Exemple #5
0
 def test_account_positions(self):
     """
     Test getting account positions by manually adding a position to the class member
     """
     pt: PerpetualTrading = PerpetualTrading()
     aPos: Position = Position("market1", PositionSide.LONG, Decimal("0"), Decimal("100"), Decimal("1"), Decimal("5"))
     pt._account_positions["market1"] = aPos
     self.assertEqual(len(pt.account_positions), 1)
     self.assertEqual(pt.account_positions["market1"], aPos)
     self.assertEqual(pt.get_position("market1"), aPos)
     self.assertEqual(pt.get_position("market2"), None)
Exemple #6
0
 def test_supported_position_modes(self):
     pt: PerpetualTrading = PerpetualTrading()
     with self.assertRaises(NotImplementedError):
         pt.supported_position_modes()
Exemple #7
0
 def test_leverage(self):
     pt: PerpetualTrading = PerpetualTrading()
     pt.set_leverage("pair1", 2)
     pt.set_leverage("pair2", 3)
     self.assertEqual(pt.get_leverage("pair1"), 2)
     self.assertEqual(pt.get_leverage("pair2"), 3)
Exemple #8
0
 def test_position_mode(self):
     pt: PerpetualTrading = PerpetualTrading()
     self.assertEqual(pt.position_mode, PositionMode.ONEWAY)
     pt.set_position_mode(PositionMode.HEDGE)
     self.assertEqual(pt.position_mode, PositionMode.HEDGE)
Exemple #9
0
 def test_init(self):
     pt: PerpetualTrading = PerpetualTrading()
     self.assertEqual(len(pt.account_positions), 0)
     self.assertEqual(pt.position_mode, PositionMode.ONEWAY)
     self.assertEqual(pt.funding_payment_span, [0, 0])
 def __init__(self):
     BacktestMarket.__init__(self)
     PerpetualTrading.__init__(self)
     self._funding_payment_span = [0, 10]
Exemple #11
0
 def __init__(self):
     MockPaperExchange.__init__(self)
     PerpetualTrading.__init__(self)
     self._funding_payment_span = [0, 10]