set_trading_stop
Set take profit, stop loss, and trailing stop parameters for trades on Bybit Server. Specify category, symbol, and optional settings to manage risk and automate trading strategies effectively.
Instructions
Set trading stop
Args:
category (str): Category (spot, linear, inverse, etc.)
symbol (str): Symbol (e.g., BTCUSDT)
takeProfit (Optional[str]): Take profit price
stopLoss (Optional[str]): Stop loss price
trailingStop (Optional[str]): Trailing stop
positionIdx (Optional[int]): Position index
Returns:
Dict: Setting result
Example:
set_trading_stop("spot", "BTCUSDT", "55000", "45000", "1000", 0)
Reference:
https://bybit-exchange.github.io/docs/v5/position/trading-stop
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category (spot, linear, inverse, etc.) | |
| positionIdx | No | Position index | |
| stopLoss | No | Stop loss price | |
| symbol | Yes | Symbol (e.g., BTCUSDT) | |
| takeProfit | No | Take profit price | |
| trailingStop | No | Trailing stop |
Implementation Reference
- src/server.py:484-523 (handler)MCP tool handler for set_trading_stop. Includes input schema via Field annotations and logic that calls the service helper.@mcp.tool() def set_trading_stop( category: str = Field(description="Category (spot, linear, inverse, etc.)"), symbol: str = Field(description="Symbol (e.g., BTCUSDT)"), takeProfit: Optional[str] = Field(default=None, description="Take profit price"), stopLoss: Optional[str] = Field(default=None, description="Stop loss price"), trailingStop: Optional[str] = Field(default=None, description="Trailing stop"), positionIdx: Optional[int] = Field(default=None, description="Position index") ) -> Dict: """ Set trading stop Args: category (str): Category (spot, linear, inverse, etc.) symbol (str): Symbol (e.g., BTCUSDT) takeProfit (Optional[str]): Take profit price stopLoss (Optional[str]): Stop loss price trailingStop (Optional[str]): Trailing stop positionIdx (Optional[int]): Position index Returns: Dict: Setting result Example: set_trading_stop("spot", "BTCUSDT", "55000", "45000", "1000", 0) Reference: https://bybit-exchange.github.io/docs/v5/position/trading-stop """ try: result = bybit_service.set_trading_stop( category, symbol, takeProfit, stopLoss, trailingStop, positionIdx ) if result.get("retCode") != 0: logger.error(f"Failed to set trading stop: {result.get('retMsg')}") return {"error": result.get("retMsg")} return result except Exception as e: logger.error(f"Failed to set trading stop: {e}", exc_info=True) return {"error": str(e)}
- src/service.py:427-453 (helper)BybitService helper method that wraps the underlying client.set_trading_stop call to set trading stops.def set_trading_stop(self, category: str, symbol: str, takeProfit: Optional[str] = None, stopLoss: Optional[str] = None, trailingStop: Optional[str] = None, positionIdx: Optional[int] = None) -> Dict: """ Set trading stop Args: category (str): Category (spot, linear, inverse, etc.) symbol (str): Symbol (e.g., BTCUSDT) takeProfit (Optional[str]): Take profit price stopLoss (Optional[str]): Stop loss price trailingStop (Optional[str]): Trailing stop positionIdx (Optional[int]): Position index Returns: Dict: Setting result """ return self.client.set_trading_stop( category=category, symbol=symbol, takeProfit=takeProfit, stopLoss=stopLoss, trailingStop=trailingStop, positionIdx=positionIdx )
- src/server.py:484-484 (registration)The @mcp.tool() decorator registers the set_trading_stop function as an MCP tool.@mcp.tool()
- src/server.py:486-492 (schema)Input schema defined via Pydantic Field annotations in the handler function signature.category: str = Field(description="Category (spot, linear, inverse, etc.)"), symbol: str = Field(description="Symbol (e.g., BTCUSDT)"), takeProfit: Optional[str] = Field(default=None, description="Take profit price"), stopLoss: Optional[str] = Field(default=None, description="Stop loss price"), trailingStop: Optional[str] = Field(default=None, description="Trailing stop"), positionIdx: Optional[int] = Field(default=None, description="Position index") ) -> Dict: