Why didn't the TP/SL execute at the set price?

Publicado el 13 nov 2024Actualizado el 30 ene 2026lectura de 6 min8

Summary: When the stop loss and take profit prices are reached but not executed, it may be due to the following reasons: (1) A different trigger price type is selected, so the stop loss or take profit is not actually triggered. (2) The stop loss or take profit is set as a limit order, and the limit order is not filled after being triggered. (3) Market volatility or insufficient market depth may also cause the order to be unfilled or only partially filled.

Take profit and stop loss are types of strategy orders. You first need to set a trigger price, followed by an order price. When the market price reaches the trigger price, the system will place the order at the specified order price for matching in the market.

When using the take profit and stop loss function, you may encounter situations where the market price reaches the trigger price, but the order is not filled or only partially filled.

This may be due to various factors such as the trigger price type, order price type, market fluctuations, order book depth, the quantity of orders, and whether the margin is sufficient. It’s recommended to evaluate the order status based on real-time market conditions.

Take profit/stop loss trigger price ≠ order price ≠ filled price, It is important to understand how take profit and stop loss orders work. For market orders, the system places the order at the best available price in the current market, and the final filled price depends on market conditions。

Below are three common scenarios where take profit or stop loss orders are not filled or only partially filled, along with detailed explanations:

1. The take profit or stop loss trigger price was not triggered

A take profit or stop loss order is only sent to the market after the trigger price is successfully met. When setting a take profit or stop loss order, you can choose one of the following trigger price types: Last Price, Mark Price, or Index Price.

You can view the price trends for these three price types on the candlestick chart. On the trading page, click Markets > Last Price to switch between different price types, review historical price movements, and compare them with your configured trigger price to confirm whether the trigger price was actually reached. If the take profit or stop loss trigger price is not triggered, the corresponding order will not be executed.

For example:

For the ETHUSDT perpetual futures, a long position with an average entry price of 3,200 is set with a TP trigger price (mark price) at 4,000, and the TP price limit order price (market order) is also set at 4,000.

If the ETHUSDT price rises and the latest price briefly reaches 4,000 before dropping rapidly, the latest market price may have reached 4,000 while the mark price does not. If the trigger price type for the take profit or stop loss order is set to Mark Price, the order will not be triggered in this scenario.

As a result, the take profit market order (close long at 4,000) is not sent to the market and therefore will not be filled.

2. Limit orders not filled or partially filled

There are two types of take-profit and stop-loss orders: market orders and limit orders.

  1. Once triggered, a market order places an order at the best available market price at that time, allowing the order to be filled more quickly.

  2. Once triggered, a limit order is sent to the market at the limit price you specify, which represents the highest buy price or the lowest sell price you are willing to accept.

By default, take-profit and stop-loss orders are set as market orders. You may also choose to set them as limit orders. To increase the likelihood of a limit order being filled, it is recommended to set the limit buy price above the trigger price by a certain distance, and the limit sell price below the trigger price by a certain distance.

For example:

For the ETHUSDT perpetual futures, a long position with an average entry price of 3,204.6 sets a stop-loss trigger price (Last Price) at 3,200.

If the stop-loss is set as a limit order and both the trigger price and the limit price are set at 3,200, once the latest price drops to 3,200, the stop-loss limit order (sell to close the long position at 3,200) will be triggered. The system will then place a limit sell order at 3,200. If market volatility is high, such as during a rapid price decline, the limit sell order at 3,200 may not be filled in time or may only be partially filled.

Therefore, in this scenario, when the stop-loss trigger price is 3,200, the limit order price can be set to 3,198. After the stop-loss is triggered, placing a limit sell order below the trigger price can significantly increase the likelihood of the order being filled.

3. Orders are subject to maximum order size limits and price-time priority

Orders must comply with the maximum order size limit, and sufficient margin must be available. If an order exceeds the maximum order size limit or if the margin is insufficient at the time the order is triggered, the order may fail to be placed.

After a take profit or stop loss order is successfully triggered, the order sent to the market is also subject to the price-time priority matching mechanism. Orders with better prices are matched first, and when prices are the same, orders are matched based on the time they were placed.

As a result, even if your market or limit order is successfully triggered and sent to the market, it may not be filled or may only be partially filled due to other orders in the order book that offer better prices or were placed earlier.

For more information, please refer to this article: Strategy order types

In summary, whether a take profit or stop loss order is fully filled depends on multiple factors, including the trigger price type, order price type, market volatility, order book depth, order quantity, and whether sufficient margin is available. It is recommended to reasonably configure take-profit and stop-loss order types and parameters to better manage trading risks.