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
Exemple #2
0
    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