diff --git a/examples/cases/account/get_orders_history_sorted.py b/examples/cases/account/get_orders_history_sorted.py new file mode 100644 index 0000000..e575b6c --- /dev/null +++ b/examples/cases/account/get_orders_history_sorted.py @@ -0,0 +1,36 @@ +import logging.handlers +from asyncio import run + +from examples.utils import BTC_USD_MARKET, create_rest_client, init_env +from x10.models.order import Sort + +LOGGER = logging.getLogger() + +MARKET_NAME = BTC_USD_MARKET +PAGE_LIMIT = 50 + + +async def run_example(): + init_env() + rest_client = create_rest_client() + + # Sort by last update time instead of the default (order id). + LOGGER.info("Fetching order history for %s sorted by %s...", MARKET_NAME, Sort.UPDATED_AT) + + response = await rest_client.account.get_orders_history( + market_names=[MARKET_NAME], + limit=PAGE_LIMIT, + sort=Sort.UPDATED_AT, + ) + orders = response.data or [] + + LOGGER.info("Fetched %s order(s)", len(orders)) + + for order in orders: + LOGGER.info("Order: %s", order.to_pretty_json()) + + await rest_client.close() + + +if __name__ == "__main__": + run(main=run_example()) diff --git a/x10/clients/rest/modules/account_module.py b/x10/clients/rest/modules/account_module.py index 17ba311..aa599a7 100644 --- a/x10/clients/rest/modules/account_module.py +++ b/x10/clients/rest/modules/account_module.py @@ -14,7 +14,7 @@ from x10.models.bridge import BridgesConfigModel, QuoteModel from x10.models.client import ClientModel from x10.models.fee import TradingFeeModel -from x10.models.order import OpenOrderModel, OrderSide, OrderType +from x10.models.order import OpenOrderModel, OrderSide, OrderType, Sort from x10.models.position import PositionHistoryModel, PositionModel, PositionSide from x10.models.trade import AccountTradeModel, TradeType from x10.models.transfer import TransferResponseModel @@ -97,6 +97,7 @@ async def get_orders_history( order_side: Optional[OrderSide] = None, cursor: Optional[int] = None, limit: Optional[int] = None, + sort: Optional[Sort] = None, ) -> WrappedApiResponseModel[List[OpenOrderModel]]: """ https://api.docs.extended.exchange/#get-orders-history @@ -104,7 +105,14 @@ async def get_orders_history( url = self._get_url( "/user/orders/history", - query={"market": market_names, "type": order_type, "side": order_side, "cursor": cursor, "limit": limit}, + query={ + "market": market_names, + "type": order_type, + "side": order_side, + "cursor": cursor, + "limit": limit, + "sort": sort, + }, ) return await send_get_request(await self._get_session(), url, List[OpenOrderModel], api_key=self._get_api_key()) diff --git a/x10/models/order.py b/x10/models/order.py index 553a27e..d58fef5 100644 --- a/x10/models/order.py +++ b/x10/models/order.py @@ -17,11 +17,17 @@ class OrderSide(StrEnum): SELL = "SELL" +class Sort(StrEnum): + ID = "ID" + UPDATED_AT = "UPDATED_AT" + + class OrderType(StrEnum): LIMIT = "LIMIT" CONDITIONAL = "CONDITIONAL" MARKET = "MARKET" TPSL = "TPSL" + TWAP = "TWAP" class OrderTpslType(StrEnum):