Esempio n. 1
0
 def __init__(self,
              k2_api_key: str,
              k2_secret_key: str,
              trading_pairs: Optional[List[str]] = None,
              trading_required: bool = True):
     """
     :param k2_api_key: The API key to connect to private K2 APIs.
     :param k2_secret_key: The API secret.
     :param trading_pairs: The market trading pairs which to track order book data.
     :param trading_required: Whether actual trading is needed.
     """
     super().__init__()
     self._trading_required = trading_required
     self._trading_pairs = trading_pairs
     self._k2_auth = K2Auth(k2_api_key, k2_secret_key)
     self._order_book_tracker = K2OrderBookTracker(
         trading_pairs=trading_pairs)
     self._user_stream_tracker = K2UserStreamTracker(
         self._k2_auth, trading_pairs)
     self._ev_loop = asyncio.get_event_loop()
     self._shared_client = None
     self._poll_notifier = asyncio.Event()
     self._last_timestamp = 0
     self._in_flight_orders = {
     }  # Dict[client_order_id:str, K2InFlightOrder]
     self._order_not_found_records = {
     }  # Dict[client_order_id:str, count:int]
     self._trading_rules = {}  # Dict[trading_pair:str, TradingRule]
     self._status_polling_task = None
     self._user_stream_tracker_task = None
     self._user_stream_event_listener_task = None
     self._trading_rules_polling_task = None
     self._last_poll_timestamp = 0
 def setUpClass(cls):
     cls.ev_loop: asyncio.BaseEventLoop = asyncio.get_event_loop()
     cls.order_book_tracker: K2OrderBookTracker = K2OrderBookTracker(
         cls.trading_pairs)
     cls.order_book_tracker.start()
     cls.ev_loop.run_until_complete(cls.wait_til_tracker_ready())