def test_result(self):
        impl = WebsocketRequestImpl("12345")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_order_update(symbols, callback)
        event = request.json_parser(parse_json_from_string(data))

        self.assertEqual("btcusdt", event.symbol)
        self.assertEqual(1.6621, event.data.price)
        self.assertEqual(5001, event.data.amount)
        self.assertEqual(5000, event.data.filled_amount)
        self.assertEqual("btcusdt", event.data.symbol)
        self.assertEqual(convert_cst_in_millisecond_to_utc(1522856623232),
                         event.timestamp)
        self.assertEqual(AccountType.SPOT, event.data.account_type)
        self.assertEqual(convert_cst_in_millisecond_to_utc(1522858623622),
                         event.data.created_timestamp)
        self.assertEqual(2039498445, event.data.order_id)
        self.assertEqual(OrderType.BUY_LIMIT, event.data.order_type)
        self.assertEqual(OrderSource.API, event.data.source)
        self.assertEqual(8301.35728, event.data.filled_cash_amount)
        self.assertEqual(8, event.data.filled_fees)
    def test_result(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_trade_event(symbols, callback)
        event = request.json_parser(parse_json_from_string(data))
        self.assertEqual("btcusdt", event.symbol)
        self.assertEqual(2, len(event.trade_list))
        self.assertEqual(convert_cst_in_millisecond_to_utc(1550558574702),
                         event.timestamp)
        self.assertEqual(0.001, event.trade_list[0].amount)
        self.assertEqual(convert_cst_in_millisecond_to_utc(1550558574684),
                         event.trade_list[0].timestamp)
        self.assertEqual("10033544262424890651900",
                         event.trade_list[0].trade_id)
        self.assertEqual(3892.36, event.trade_list[0].price)
        self.assertEqual(TradeDirection.SELL, event.trade_list[0].direction)
        self.assertEqual(0.0512, event.trade_list[1].amount)
        self.assertEqual(convert_cst_in_millisecond_to_utc(1550558574684),
                         event.trade_list[1].timestamp)
        self.assertEqual("10033544262424890651183",
                         event.trade_list[1].trade_id)
        self.assertEqual(3892.35, event.trade_list[1].price)
        self.assertEqual(TradeDirection.BUY, event.trade_list[1].direction)
    def test_request(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_trade_event(symbols, callback)
        mock_connection = MockWebsocketConnection(request)
        request.subscription_handler(mock_connection)
        subscription = mock_connection.pop_output_message()
        self.assertTrue(subscription.find("market.btcusdt.trade.detail") != -1)
    def test_request(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_candlestick_event(symbols, CandlestickInterval.MIN1, callback)
        mock_connection = MockWebsocketConnection(request)
        request.subscription_handler(mock_connection)
        subscription = mock_connection.pop_output_message()
        self.assertTrue(subscription.find("market.btcusdt.kline.1min") != -1)
    def test_request(self):
        impl = WebsocketRequestImpl("12345")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_account_event(BalanceMode.AVAILABLE, callback)
        mock_connection = MockWebsocketConnection(request)
        request.subscription_handler(mock_connection)
        subscription = mock_connection.pop_output_message()
        self.assertTrue(subscription.find("accounts") != -1)
    def __init__(self, **kwargs):
        """
        Create the subscription client to subscribe the update from server.

        :param kwargs: The option of subscription connection.
            api_key: The public key applied from Huobi.
            secret_key: The private key applied from Huobi.
            uri: Set the URI for subscription.
            is_auto_connect: When the connection lost is happening on the subscription line, specify whether the client
                            reconnect to server automatically. The connection lost means:
                                Caused by network problem
                                The connection close triggered by server (happened every 24 hours)
                            No any message can be received from server within a specified time, see receive_limit_ms
            receive_limit_ms: Set the receive limit in millisecond. If no message is received within this limit time,
                            the connection will be disconnected.
            connection_delay_failure: If auto reconnect is enabled, specify the delay time before reconnect.
        """
        api_key = None
        secret_key = None
        if "api_key" in kwargs:
            api_key = kwargs["api_key"]
        if "secret_key" in kwargs:
            secret_key = kwargs["secret_key"]
        self.__api_key = api_key
        self.__secret_key = secret_key
        self.websocket_request_impl = WebsocketRequestImpl(self.__api_key)
        self.websocket_request_impl_v2 = WebsocketRequestImplV2(self.__api_key)
        self.connections = list()
        self.uri = WebSocketDefine.Uri
        is_auto_connect = True
        receive_limit_ms = 60000
        connection_delay_failure = 15
        if "uri" in kwargs:
            self.uri = kwargs["uri"]
        if "is_auto_connect" in kwargs:
            is_auto_connect = kwargs["is_auto_connect"]
        if "receive_limit_ms" in kwargs:
            receive_limit_ms = kwargs["receive_limit_ms"]
        if "connection_delay_failure" in kwargs:
            connection_delay_failure = kwargs["connection_delay_failure"]
        self.__watch_dog = WebSocketWatchDog(is_auto_connect, receive_limit_ms,
                                             connection_delay_failure)

        try:
            host = urllib.parse.urlparse(self.uri).hostname
            impl = RestApiRequestImpl(api_key, secret_key, "https://" + host)
            account_info_map.update_user_info(api_key, impl)
        except Exception:
            pass
Beispiel #7
0
    def test_result(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_price_depth_event(symbols, "step0", callback)
        event = request.json_parser(parse_json_from_string(data))
        self.assertEqual("btcusdt", event.symbol)
        self.assertEqual(1550558788054, event.timestamp)
        self.assertEqual(3, len(event.data.bids))
        self.assertEqual(2, len(event.data.asks))
        self.assertEqual(3891.94, event.data.bids[0].price)
        self.assertEqual(0.0257, event.data.bids[0].amount)
        self.assertEqual(3891.95, event.data.asks[0].price)
        self.assertEqual(0.0283, event.data.asks[0].amount)
    def test_result(self):
        impl = WebsocketRequestImpl("12345")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_account_event(BalanceMode.AVAILABLE, callback)
        event = request.json_parser(parse_json_from_string(data))

        self.assertEqual(1550556381242, event.timestamp)
        self.assertEqual(1, len(event.account_change_list))
        self.assertEqual(AccountChangeType.NEWORDER, event.change_type)
        self.assertEqual(AccountType.SPOT, event.account_change_list[0].account_type)
        self.assertEqual("ht", event.account_change_list[0].currency)
        self.assertEqual(10.8208984536412, event.account_change_list[0].balance)
        self.assertEqual(BalanceType.TRADE, event.account_change_list[0].balance_type)
Beispiel #9
0
    def test_result(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_24h_trade_statistics_event(symbols, callback)
        event = request.json_parser(parse_json_from_string(data))
        self.assertEqual("btcusdt", event.symbol)
        self.assertEqual(1550740513421, event.timestamp)
        self.assertEqual(204966, event.trade_statistics.count)
        self.assertEqual(115320213.26007387, event.trade_statistics.volume)
        self.assertEqual(0.00030342, event.trade_statistics.open)
        self.assertEqual(3903.5, event.trade_statistics.low)
        self.assertEqual(4015, event.trade_statistics.high)
        self.assertEqual(3947.03, event.trade_statistics.close)
        self.assertEqual(29147.328607142535, event.trade_statistics.amount)
    def test_result(self):
        impl = WebsocketRequestImpl("")
        symbols = list()
        symbols.append("btcusdt")

        def callback(event):
            pass

        request = impl.subscribe_candlestick_event(symbols, CandlestickInterval.MIN1, callback)
        candlestick_event = request.json_parser(parse_json_from_string(data))
        self.assertEqual("btcusdt", candlestick_event.symbol)
        self.assertEqual( convert_cst_in_millisecond_to_utc(1550469651403), candlestick_event.timestamp)
        self.assertEqual(CandlestickInterval.MIN1, candlestick_event.interval)
        self.assertEqual(3719.88, candlestick_event.data.open)
        self.assertEqual(3719.91, candlestick_event.data.close)
        self.assertEqual(3719.45, candlestick_event.data.low)
        self.assertEqual(3719.99, candlestick_event.data.high)
        self.assertEqual(5.470327974838371482, candlestick_event.data.amount)
        self.assertEqual(20349.2034519999999944659, candlestick_event.data.volume)
        self.assertEqual(73, candlestick_event.data.count)