get_open_orders
Retrieve open orders on Bybit based on category, symbol, order ID, or filter. Specify limits to fetch specific order details for trading strategies or monitoring.
Instructions
Get open orders
Args:
category (str): Category (spot, linear, inverse, etc.)
symbol (Optional[str]): Symbol (e.g., BTCUSDT)
orderId (Optional[str]): Order ID
orderLinkId (Optional[str]): Order link ID
orderFilter (Optional[str]): Order filter
limit (int): Number of orders to retrieve
Returns:
Dict: Open orders
Example:
get_open_orders("spot", "BTCUSDT", "123456789", "link123", "Order", 10)
Reference:
https://bybit-exchange.github.io/docs/v5/order/open-order
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category (spot, linear, inverse, etc.) | |
| limit | No | Number of orders to retrieve | |
| orderFilter | No | Order filter | |
| orderId | No | Order ID | |
| orderLinkId | No | Order link ID | |
| symbol | No | Symbol (e.g., BTCUSDT) |
Implementation Reference
- src/server.py:442-481 (handler)Primary MCP tool handler for 'get_open_orders'. Defines input schema with Pydantic Field descriptions, executes the tool by delegating to BybitService.get_open_orders, checks retCode, and handles exceptions with error responses.@mcp.tool() def get_open_orders( category: str = Field(description="Category (spot, linear, inverse, etc.)"), symbol: Optional[str] = Field(default=None, description="Symbol (e.g., BTCUSDT)"), orderId: Optional[str] = Field(default=None, description="Order ID"), orderLinkId: Optional[str] = Field(default=None, description="Order link ID"), orderFilter: Optional[str] = Field(default=None, description="Order filter"), limit: int = Field(default=50, description="Number of orders to retrieve") ) -> Dict: """ Get open orders Args: category (str): Category (spot, linear, inverse, etc.) symbol (Optional[str]): Symbol (e.g., BTCUSDT) orderId (Optional[str]): Order ID orderLinkId (Optional[str]): Order link ID orderFilter (Optional[str]): Order filter limit (int): Number of orders to retrieve Returns: Dict: Open orders Example: get_open_orders("spot", "BTCUSDT", "123456789", "link123", "Order", 10) Reference: https://bybit-exchange.github.io/docs/v5/order/open-order """ try: result = bybit_service.get_open_orders( category, symbol, orderId, orderLinkId, orderFilter, limit ) if result.get("retCode") != 0: logger.error(f"Failed to get open orders: {result.get('retMsg')}") return {"error": result.get("retMsg")} return result except Exception as e: logger.error(f"Failed to get open orders: {e}", exc_info=True) return {"error": str(e)}
- src/service.py:379-404 (helper)Supporting helper method in BybitService class that directly calls the underlying pybit.unified_trading.HTTP client's get_open_orders method to fetch open orders from Bybit API.def get_open_orders(self, category: str, symbol: Optional[str] = None, orderId: Optional[str] = None, orderLinkId: Optional[str] = None, orderFilter: Optional[str] = None, limit: int = 50) -> Dict: """ Get open orders Args: category (str): Category (spot, linear, inverse, etc.) symbol (Optional[str]): Symbol (e.g., BTCUSDT) orderId (Optional[str]): Order ID orderLinkId (Optional[str]): Order link ID orderFilter (Optional[str]): Order filter limit (int): Number of orders to retrieve Returns: Dict: Open orders """ return self.client.get_open_orders( category=category, symbol=symbol, orderId=orderId, orderLinkId=orderLinkId, orderFilter=orderFilter, limit=limit )