Why Was My TP/SL Not Executed?
Common Reasons
Take-profit (TP) and stop-loss (SL) orders are trigger orders that convert to market orders when the trigger price is reached. There are several reasons a TP/SL may not execute as expected:
1. Price Did Not Reach Trigger Level
The mark price (not the last trade price) is used to trigger TP/SL orders. The mark price may differ slightly from the last trade price displayed on the chart. Verify the exact mark price at the time of the expected trigger.
2. Insufficient Liquidity
When a TP/SL triggers, it becomes a market order. In fast-moving or illiquid markets, the execution price may differ from the trigger price (slippage). In extreme cases, the order may partially fill or not fill at all.
3. Position Was Already Liquidated
If the mark price moved through your stop-loss level and your position was liquidated before the SL triggered, the SL order is cancelled automatically. Liquidation takes priority over pending trigger orders.
4. Order Expired
TP/SL orders are cancelled when the associated position is closed by other means (manual close, opposing order, or liquidation).
5. Network Congestion
During extreme volatility, order processing may experience brief delays. The trigger price may be reached and passed before the order is processed.
Best Practices
- Set TP/SL levels with adequate distance from the current price to avoid premature triggers from normal volatility
- Use limit TP/SL for better execution control (at the cost of possible non-fill)
- Monitor positions during high-volatility events (FOMC, CPI releases)
- Consider using lower leverage to reduce the risk of liquidation before your SL triggers