def get_commission_rate(self, symbol):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/commissionRate", builder)

        def parse(json_wrapper):
            result = CommissionRate.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def change_position_mode(self, dualSidePosition):
        check_should_not_none(dualSidePosition, "dualSidePosition")
        builder = UrlParamsBuilder()
        builder.put_url("dualSidePosition", dualSidePosition)

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/positionSide/dual", builder)

        def parse(json_wrapper):
            result = CodeMsg.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def cancel_all_orders(self, symbol):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_delete_with_signature(
            "/dapi/v1/allOpenOrders", builder)

        def parse(json_wrapper):
            result = CodeMsg.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def get_open_interest(self, symbol):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get("/dapi/v1/openInterest",
                                               builder)

        def parse(json_wrapper):
            result = list()
            element = OpenInterest.json_parse(json_wrapper)
            result.append(element)
            return element

        request.json_parser = parse
        return request
    def get_ticker_price_change_statistics(self, symbol):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get("/dapi/v1/ticker/24hr", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = TickerPriceChangeStatistics.json_parse(item)
                result.append(element)

            return result

        request.json_parser = parse
        return request
    def get_symbol_orderbook_ticker(self, symbol):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get("/dapi/v1/ticker/bookTicker",
                                               builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = SymbolOrderBook.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_open_orders(self, symbol):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/openOrders", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = Order.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_mark_price(self, symbol):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)

        request = self.__create_request_by_get("/dapi/v1/premiumIndex",
                                               builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = MarkPrice.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_servertime(self):
        builder = UrlParamsBuilder()
        request = self.__create_request_by_get("/dapi/v1/time", builder)

        def parse(json_wrapper):
            result = json_wrapper.get_int("serverTime")
            return result

        request.json_parser = parse
        return request
    def get_leverage_bracket(self, pair):
        builder = UrlParamsBuilder()
        builder.put_url("pair", pair)

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/leverageBracket", builder)

        def parse(json_wrapper):
            result = list()

            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = LeverageBracket.json_parse(item)
                result.append(element)

            return result

        request.json_parser = parse
        return request
    def get_exchange_information(self):
        builder = UrlParamsBuilder()
        request = self.__create_request_by_get("/dapi/v1/exchangeInfo",
                                               builder)

        def parse(json_wrapper):
            result = ExchangeInformation.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def get_liquidation_orders(self, symbol, startTime, endTime, limit):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get("/dapi/v1/allForceOrders",
                                               builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = LiquidationOrder.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_funding_rate(self, symbol, startTime, endTime, limit):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get("/dapi/v1/fundingRate", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = FundingRate.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_account_information(self):
        builder = UrlParamsBuilder()

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/account", builder)

        def parse(json_wrapper):
            result = AccountInformation.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def get_position_mode(self):
        builder = UrlParamsBuilder()

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/positionSide/dual", builder)

        def parse(json_wrapper):
            result = PositionMode.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def close_user_data_stream(self):
        builder = UrlParamsBuilder()

        request = self.__create_request_by_delete_with_signature(
            "/dapi/v1/listenKey", builder)

        def parse(json_wrapper):
            result = "OK"
            return result

        request.json_parser = parse
        return request
    def start_user_data_stream(self):
        builder = UrlParamsBuilder()

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/listenKey", builder)

        def parse(json_wrapper):
            result = json_wrapper.get_string("listenKey")
            return result

        request.json_parser = parse
        return request
    def get_aggregate_trades_list(self, symbol, fromId, startTime, endTime,
                                  limit):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("fromId", fromId)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get("/dapi/v1/aggTrades", builder)

        def parse(json_wrapper):
            aggregate_trades_list = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                trade = AggregateTrade.json_parse(item)
                aggregate_trades_list.append(trade)
            return aggregate_trades_list

        request.json_parser = parse
        return request
    def cancel_order(self, symbol, orderId, origClientOrderId):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("orderId", orderId)
        builder.put_url("origClientOrderId", origClientOrderId)

        request = self.__create_request_by_delete_with_signature(
            "/dapi/v1/order", builder)

        def parse(json_wrapper):
            result = Order.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def get_position(self):
        builder = UrlParamsBuilder()

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/positionRisk", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = Position.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_old_trade_lookup(self, symbol, limit, fromId):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("limit", limit)
        builder.put_url("fromId", fromId)

        request = self.__create_request_by_get_with_apikey(
            "/dapi/v1/historicalTrades", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = Trade.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_order_book(self, symbol, limit):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get("/dapi/v1/depth", builder)

        def parse(json_wrapper):
            result = OrderBook.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def cancel_list_orders(self, symbol, orderIdList, origClientOrderIdList):
        check_should_not_none(symbol, "symbol")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("orderIdList", orderIdList)
        builder.put_url("origClientOrderIdList", origClientOrderIdList)
        request = self.__create_request_by_delete_with_signature(
            "/dapi/v1/batchOrders", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                if item.contain_key("code"):
                    element = Msg.json_parse(item)
                else:
                    element = Order.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def auto_cancel_all_orders(self, symbol, countdownTime):
        check_should_not_none(symbol, "symbol")
        check_should_not_none(symbol, "countdownTime")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("countdownTime", countdownTime)

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/countdownCancelAll", builder)

        def parse(json_wrapper):
            result = CountdownCancelAll.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def change_margin_type(self, symbol, marginType):
        check_should_not_none(symbol, "symbol")
        check_should_not_none(marginType, "marginType")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("marginType", marginType)

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/marginType", builder)

        def parse(json_wrapper):
            result = CodeMsg.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def change_initial_leverage(self, symbol, leverage):
        check_should_not_none(symbol, "symbol")
        check_should_not_none(leverage, "leverage")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("leverage", leverage)

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/leverage", builder)

        def parse(json_wrapper):
            result = Leverage.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def change_position_margin(self, symbol, amount, type):
        check_should_not_none(symbol, "symbol")
        check_should_not_none(amount, "amount")
        check_should_not_none(type, "type")
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("amount", amount)
        builder.put_url("type", type)

        request = self.__create_request_by_post_with_signature(
            "/dapi/v1/positionMargin", builder)

        def parse(json_wrapper):
            result = PositionMargin.json_parse(json_wrapper)
            return result

        request.json_parser = parse
        return request
    def get_basis(self, pair, contractType, period, startTime, endTime, limit):
        builder = UrlParamsBuilder()
        builder.put_url("pair", pair)
        builder.put_url("contractType", contractType)
        builder.put_url("period", period)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get("/futures/data/basis", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = Basis.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_global_long_short_accounts(self, pair, period, startTime, endTime,
                                       limit):
        builder = UrlParamsBuilder()
        builder.put_url("pair", pair)
        builder.put_url("period", period)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get(
            "/futures/data/globalLongShortAccountRatio", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = LongShortAccounts.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request
    def get_income_history(self, symbol, incomeType, startTime, endTime,
                           limit):
        builder = UrlParamsBuilder()
        builder.put_url("symbol", symbol)
        builder.put_url("incomeType", incomeType)
        builder.put_url("startTime", startTime)
        builder.put_url("endTime", endTime)
        builder.put_url("limit", limit)

        request = self.__create_request_by_get_with_signature(
            "/dapi/v1/income", builder)

        def parse(json_wrapper):
            result = list()
            data_list = json_wrapper.convert_2_array()
            for item in data_list.get_items():
                element = Income.json_parse(item)
                result.append(element)
            return result

        request.json_parser = parse
        return request