def request_candlestick_event(self, symbols, interval, callback, from_ts_second, end_ts_second, auto_close, error_handler=None): check_symbol_list(symbols) check_should_not_none(interval, "interval") check_should_not_none(callback, "callback") def subscription_handler(connection): for val in symbols: connection.send( request_kline_channel(val, interval, from_ts_second, end_ts_second)) time.sleep(0.01) def json_parse(json_wrapper): candle_stick_event_obj = CandlestickRequest.json_parse( json_wrapper) candle_stick_event_obj.interval = interval return candle_stick_event_obj request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = False request.json_parser = json_parse request.update_callback = callback request.error_handler = error_handler return request
def subscribe_orders_update_event(self, symbol, callback, error_handler=None): check_should_not_none(symbol, "symbol") check_should_not_none(callback, "callback") def subscription_handler(connection): connection.send(orders_update_channel(symbol)) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = False request.is_trading = True request.json_parser = OrdersUpdateEvent.json_parse request.update_callback = callback request.error_handler = error_handler request.api_version = ApiVersion.VERSION_V2 return request
def request_order_list_event(self, symbol, account_id, callback, order_states, client_req_id, auto_close, error_handler=None): check_should_not_none(symbol, "symbol") check_should_not_none(callback, "callback") def subscription_handler(connection): connection.send( request_order_list_channel(symbol=symbol, account_id=account_id, states_str=order_states, client_req_id=client_req_id)) def get_account_type_map(json_wrapper): #get account type mapping account_id_type_map = {} error_code = json_wrapper.get_int("err-code") if error_code == 0: order_list_json = json_wrapper.get_array("data") for order_json in order_list_json.get_items(): account_id = order_json.get_int("account-id") account_type = account_info_map.get_account_by_id( self.__api_key, account_id).account_type account_id_type_map[account_id] = account_type return account_id_type_map def json_parse(json_wrapper): account_type_map = get_account_type_map(json_wrapper) req_obj = OrderListRequest.json_parse(json_wrapper, account_type_map) req_obj = OrderListRequest.update_symbol(req_obj) return req_obj request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = True request.json_parser = json_parse request.update_callback = callback request.error_handler = error_handler return request
def request_account_balance_event(self, callback, client_req_id, auto_close, error_handler=None): check_should_not_none(callback, "callback") def subscription_handler(connection): connection.send(request_account_list_channel(client_req_id)) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = True request.json_parser = AccountBalanceRequest.json_parse request.update_callback = callback request.error_handler = error_handler return request
def subscribe_accounts_update_event(self, mode, callback, error_handler=None): check_should_not_none(callback, "callback") if str(mode) == AccountBalanceMode.TOTAL: mode = AccountBalanceMode.TOTAL else: mode = AccountBalanceMode.BALANCE def subscription_handler(connection): connection.send(accounts_update_channel(mode)) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = False request.is_trading = True request.json_parser = AccountsUpdateEvent.json_parse request.update_callback = callback request.error_handler = error_handler request.api_version = ApiVersion.VERSION_V2 return request
def request_trade_event(self, symbols, callback, auto_close, error_handler=None): check_symbol_list(symbols) check_should_not_none(callback, "callback") def subscription_handler(connection): for val in symbols: connection.send(request_trade_channel(val)) time.sleep(0.01) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = False request.json_parser = TradeRequest.json_parse request.update_callback = callback request.error_handler = error_handler return request
def subscribe_trade_clearing_event(self, symbols, callback, error_handler=None): if ("*" in symbols): symbols = ["*"] else: check_symbol_list(symbols) check_should_not_none(callback, "callback") def subscription_handler(connection): for val in symbols: connection.send(trade_clearing_channel(val)) time.sleep(0.01) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = False request.is_trading = True request.json_parser = TradeClearingEvent.json_parse request.update_callback = callback request.error_handler = error_handler request.api_version = ApiVersion.VERSION_V2 return request
def request_order_detail_event(self, order_id, callback, client_req_id, auto_close, error_handler=None): check_should_not_none(order_id, "order_id") check_should_not_none(callback, "callback") def subscription_handler(connection): connection.send( request_order_detail_channel(order_id, client_req_id)) def get_account_type_map(json_wrapper): #get account type mapping account_id_type_map = {} data = json_wrapper.get_object("data") account_id = data.get_int("account-id") account_type = account_info_map.get_account_by_id( self.__api_key, account_id).account_type account_id_type_map[account_id] = account_type return account_id_type_map def json_parse(json_wrapper): account_type_map = get_account_type_map(json_wrapper) req_obj = OrderDetailRequest.json_parse(json_wrapper, account_type_map) return req_obj request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = True request.json_parser = json_parse request.update_callback = callback request.error_handler = error_handler return request
def request_price_depth_event(self, symbols, depth_step, callback, auto_close, error_handler=None): check_symbol_list(symbols) new_step = PriceDepth.get_valid_depth_step( value=depth_step, defalut_value=DepthStep.STEP0) check_should_not_none(callback, "callback") def subscription_handler(connection): for val in symbols: connection.send(request_price_depth_channel(val, new_step)) time.sleep(0.01) request = WebsocketRequest() request.subscription_handler = subscription_handler request.auto_close = auto_close request.is_trading = False request.json_parser = PriceDepthRequest.json_parse request.update_callback = callback request.error_handler = error_handler return request