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