示例#1
0
    def create_order(self, symbol, account_type, order_type, amount, price):
        check_symbol(symbol)
        check_should_not_none(account_type, "account_type")
        check_should_not_none(order_type, "order_type")
        check_should_not_none(amount, "amount")
        if order_type == OrderType.SELL_LIMIT \
                or order_type == OrderType.BUY_LIMIT \
                or order_type == OrderType.BUY_LIMIT_MAKER \
                or order_type == OrderType.SELL_LIMIT_MAKER:
            check_should_not_none(price, "price")
        if order_type == OrderType.SELL_MARKET or order_type == OrderType.BUY_MARKET:
            check_should_none(price, "price")
        global account_info_map
        user = account_info_map.get_user(self.__api_key)
        account = user.get_account_by_type(account_type)
        source = "api"
        if account_type == AccountType.MARGIN:
            source = "margin-api"
        builder = UrlParamsBuilder()
        builder.put_post("account-id", account.id)
        builder.put_post("amount", amount)
        builder.put_post("price", price)
        builder.put_post("symbol", symbol)
        builder.put_post("type", order_type)
        builder.put_post("source", source)
        request = self.__create_request_by_post_with_signature(
            "/v1/order/orders/place", builder)

        def parse(json_wrapper):
            return json_wrapper.get_int("data")

        request.json_parser = parse
        return request
示例#2
0
    def get_open_orders(self,
                        symbol,
                        account_type,
                        size=None,
                        side=None,
                        from_id=None,
                        direct=None):
        check_symbol(symbol)
        check_range(size, 1, 500, "size")
        check_should_not_none(account_type, "account_type")
        global account_info_map
        user = account_info_map.get_user(self.__api_key)
        account = user.get_account_by_type(account_type=account_type,
                                           subtype=symbol)
        builder = UrlParamsBuilder()
        builder.put_url("account-id", account.id)
        builder.put_url("symbol", symbol)
        builder.put_url("side", side)
        builder.put_url("size", size)
        builder.put_url("from", from_id)
        builder.put_url("direct", direct)
        request = self.__create_request_by_get_with_signature(
            "/v1/order/openOrders", builder)
        """
        def parse(json_wrapper):
            order_list = list()
            data_array = json_wrapper.get_array("data")
            for item in data_array.get_items():
                order = Order()
                order.order_id = item.get_int("id")
                order.symbol = item.get_string("symbol")
                order.price = item.get_float("price")
                order.amount = item.get_float("amount")
                order.account_type = account_info_map.get_account_by_id(self.__api_key,
                                                                        item.get_int("account-id")).account_type
                order.created_timestamp = convert_cst_in_millisecond_to_utc(item.get_int("created-at"))
                order.order_type = item.get_string("type")
                order.filled_amount = item.get_float("filled-amount")
                order.filled_cash_amount = item.get_float("filled-cash-amount")
                order.filled_fees = item.get_float("filled-fees")
                order.source = item.get_string("source")
                order.state = item.get_string("state")
                order_list.append(order)
            return order_list
        """

        request.json_parser = self.get_order_list_json_parse
        return request
示例#3
0
    def create_order(self,
                     symbol,
                     account_type,
                     order_type,
                     amount,
                     price,
                     client_order_id=None,
                     stop_price=None,
                     operator=None):
        check_symbol(symbol)
        check_should_not_none(account_type, "account_type")
        check_should_not_none(order_type, "order_type")
        check_should_not_none(amount, "amount")
        if order_type == OrderType.SELL_LIMIT \
                or order_type == OrderType.BUY_LIMIT \
                or order_type == OrderType.BUY_LIMIT_MAKER \
                or order_type == OrderType.SELL_LIMIT_MAKER:
            check_should_not_none(price, "price")
        if order_type == OrderType.SELL_MARKET or order_type == OrderType.BUY_MARKET:
            check_should_none(price, "price")
        global account_info_map
        user = account_info_map.get_user(self.__api_key)
        account = user.get_account_by_type(account_type=account_type,
                                           subtype=symbol)
        source = RestApiRequestImpl.order_source_desc(account_type)
        builder = UrlParamsBuilder()
        builder.put_post("account-id", account.id)
        builder.put_post("amount", amount)
        builder.put_post("price", price)
        builder.put_post("symbol", symbol)
        builder.put_post("type", order_type)
        builder.put_post("source", source)
        builder.put_post("client-order-id", client_order_id)
        builder.put_post("stop-price", stop_price)
        builder.put_post("operator", operator)

        request = self.__create_request_by_post_with_signature(
            "/v1/order/orders/place", builder)

        def parse(json_wrapper):
            return json_wrapper.get_int("data")

        request.json_parser = parse
        return request
    def cancel_open_orders(self, symbol, account_type, side=None, size=None):
        check_symbol(symbol)
        check_should_not_none(account_type, "account_type")
        global account_info_map
        user = account_info_map.get_user(self.__api_key)
        account = user.get_account_by_type(account_type)
        builder = UrlParamsBuilder()
        builder.put_post("account-id", account.id)
        builder.put_post("symbol", symbol)
        builder.put_post("side", side)
        builder.put_post("size", size)
        request = self.__create_request_by_post_with_signature("/v1/order/orders/batchCancelOpenOrders", builder)

        def parse(json_wrapper):
            data = json_wrapper.get_object("data")
            batch_cancel_result = BatchCancelResult()
            batch_cancel_result.success_count = data.get_int("success-count")
            batch_cancel_result.failed_count = data.get_int("failed-count")
            return batch_cancel_result

        request.json_parser = parse
        return request