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