Take Profit, Stop Loss TP/SL
What is a Take Profit/Stop Loss Order?
Take Profit Stop Loss Order: setting the trigger price and order parameters in advance, where in the trigger price is the precondition for placing an order operation, generally the target Take Profit Stop Loss position. When the market's latest trade price reaches the trigger price, the system will place an order in accordance with the order parameters set by the user to close the position, in order to preserve profits or reduce losses.
Depending on the type of order executed after TP/SL is triggered, the Take Profit Stop Loss order is divided into:
- Limit Take Profit/Stop Loss
- Market Take Profit/Stop Loss
Limit Take Profit/Stop Loss
Limit Take Profit/Stop Loss requires the following parameters to be set:
- Trigger price
- Order price
- Order quantity
After the limit TP/SL is triggered, a limit order is issued, which specifies the maximum price the user is willing to buy or the lowest price they are willing to sell. After the user sets the limit price, the market will trade at a price favorable to the user with priority, which means that the limit order may not be able to close immediately.
Advantages
After triggering, it can ensure that the transaction price is within the limit price, and slippage can be controlled.
Disadvantages
It will not necessarily close the transaction.
Use Tips
In order to increase the probability of closing at limit take profit/stop loss, we generally do not set the order price and the trigger price the same, but instead reserve a portion of the slippage buffer. For example: long position take profit, the trigger price is 2.10 sCNH, the order price can be set to 2.09 sCNH, because a sell order of 2.09 sCNH in the 2.10 sCNH market is easier to trade!
Market Take Profit/Stop Loss
Market Take Profit/Stop Loss requires the following parameters to be set:
- Trigger price
- Order quantity
After the market take profit/stop loss is triggered, a market order will be placed at the optimal price at the time, to help the user close the transaction quickly.
Advantages
A deal can be completed immediately after triggering.
Disadvantages
There is no guarantee of a closing price, a large position or a market with poor liquidity may result in large slippage.
Summary
Limit/market orders have advantages and disadvantages. Follow these recommendations for better TP/SL effect:
| Scenario | Recommendation |
|---|---|
| Take Profit | Choose Limit Price - this can guarantee a profit |
| Stop Loss | Choose Market Price - this can close quickly |
| Small Position | Choose Market Price |
| Large Position | Choose Limit Price or batch TP/SL |
| Poor Liquidity Market | Choose Limit Price |
Types of Take Profit/Stop Loss Orders
There are two types of TP/SL orders based on when they are created:
1. Order-Attached TP/SL
When placing an opening order, you can attach TP/SL parameters. Once the order fills and creates a position, the TP/SL order is created with a fixed quantity equal to the filled quantity of that order.
Characteristics:
- Quantity is fixed at the time of order creation
- Only covers the quantity from that specific order
- If you add to your position later, you need to set new TP/SL for the additional quantity
2. Position TP/SL
After opening a position, you can set TP/SL directly on the position. This creates a TP/SL order with dynamic quantity that will close the entire remaining position at trigger time.
Characteristics:
- Quantity is determined at trigger time
- Automatically adjusts to remaining position size
- If you partially close manually, TP/SL will only close what remains
The Execution Logic of a Take Profit/Stop Loss Order
Main Parameters
| Parameter | Description |
|---|---|
| Position | The position to close |
| Trigger Price | Price at which TP/SL activates |
| Order Price | For limit orders only - the price to place the order |
| Order Quantity | Fixed (order-attached) or Dynamic (position TP/SL) |
Life Cycle
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ Pending Trigger │ ──> │ Trigger Success/Fail │ ──> │ Order Placed │
└─────────────────┘ └──────────────────────┘ └─────────────────┘
Pending Trigger
After a Take Profit/Stop Loss order has been successfully submitted, it will appear in the Order orders. A TP/SL order is a closing order, so:
- Long position TP/SL direction is "Sell Long"
- Short position TP/SL direction is "Buy Short"
Note: Each trigger order can only be triggered once. When the selected price type (Last Price or Mark Price) reaches the trigger price, it is triggered.
Trigger Rules
TP/SL orders are triggered when the selected trigger price type meets the following criteria:
When Trigger Price Type = Last Price:
| Position | Take Profit | Stop Loss |
|---|---|---|
| Long (Sell Long) | Last Price ≥ Trigger Price | Last Price ≤ Trigger Price |
| Short (Buy Short) | Last Price ≤ Trigger Price | Last Price ≥ Trigger Price |
When Trigger Price Type = Mark Price:
| Position | Take Profit | Stop Loss |
|---|---|---|
| Long (Sell Long) | Mark Price ≥ Trigger Price | Mark Price ≤ Trigger Price |
| Short (Buy Short) | Mark Price ≤ Trigger Price | Mark Price ≥ Trigger Price |
Order After Trigger
When TP/SL is triggered, the system immediately submits an order with the following parameters:
| Parameter | Value |
|---|---|
| Order Direction | Closing direction (opposite of position) |
| Order Price | Limit: specified order price / Market: best available |
| Order Quantity | min(Position Quantity at Trigger, TP/SL Order Quantity) |
Note: If the user manually closes part of the position after setting TP/SL, the triggered order will only close the remaining quantity.
Examples
Limit Take Profit Scenario
On January 15, 2025, GMYD reached 1.90 sCNH, and I opened a long position of 50,000 GMYD at 1.90 sCNH. My target take profit position is 2.10 sCNH. I want to take profit in batches, so I set up two take profit orders:
Take Profit Order 1:
| Parameter | Value |
|---|---|
| Trigger Price Type | Last Price |
| Trigger Price | 2.00 sCNH |
| Order Price | 1.99 sCNH |
| Order Quantity | 25,000 GMYD |
Take Profit Order 2:
| Parameter | Value |
|---|---|
| Trigger Price Type | Last Price |
| Trigger Price | 2.10 sCNH |
| Order Price | 2.10 sCNH |
| Order Quantity | 25,000 GMYD |
Subsequently, GMYD continued to rise, breaking through 2.00 sCNH on January 20 and reaching 2.10 sCNH briefly on January 21, hitting a maximum of 2.1005 sCNH but quickly falling back, leaving a pin.
On January 22, I checked my position and found:
- Both Take Profit Order 1 and Take Profit Order 2 were triggered
- I still hold 25,000 GMYD long position without take profit
- My current orders show a pending sell order at 2.10 sCNH, unfilled
Result: Only Take Profit Order 1 was filled. Take Profit Order 2 was triggered but not filled because during the order placement, the market price had already fallen below 2.10 sCNH, making the limit sell order unfillable.
Lesson Learned: When using limit take profit, do not set the order price equal to the trigger price. Instead, reserve a slippage buffer. For example: for a long position take profit at 2.10 sCNH trigger, set the order price to 2.09 sCNH, because a sell order at 2.09 sCNH is easier to fill near the 2.10 sCNH market!
Market Stop Loss Scenario (with Mark Price Trigger)
On January 21, 2025, GMYD broke through 2.00 sCNH. I opened a large long position of 500,000 GMYD at 2.00 sCNH, targeting 2.50 sCNH. For safety, I set a market stop loss using Mark Price trigger to avoid false triggers from price manipulation:
Stop Loss Order:
| Parameter | Value |
|---|---|
| Trigger Price Type | Mark Price |
| Trigger Price | 1.85 sCNH |
| Order Quantity | 500,000 GMYD |
Then GMYD disappointed me and fell. On January 28, there was a sudden flash crash where the Last Price dropped to 1.80 sCNH momentarily, but the Mark Price only reached 1.87 sCNH. My stop loss was NOT triggered because I used Mark Price trigger.
However, on January 30, the Mark Price finally reached 1.85 sCNH, triggering my stop loss.
Result:
- My position was completely closed
- Average closing price: 1.82 sCNH
- Slippage: (1.85 − 1.82) × 500,000 = 15,000 sCNH
Lesson Learned:
- Using Mark Price trigger protected me from the flash crash on January 28
- A large position should use batch stop loss or limit stop loss to reduce slippage
Position TP/SL (Dynamic Quantity) Scenario
On February 1, 2025, I opened a long position of 100,000 GMYD at 1.94 sCNH. Instead of setting TP/SL on the order, I set a Position Take Profit:
Position Take Profit:
| Parameter | Value |
|---|---|
| Trigger Price Type | Mark Price |
| Trigger Price | 2.20 sCNH |
| Order Type | Market |
| Order Quantity | Dynamic (entire position) |
On February 5, I decided to manually close 30,000 GMYD at 2.05 sCNH to lock in some profit.
Remaining Position: 70,000 GMYD
On February 10, the Mark Price reached 2.20 sCNH and triggered my Position Take Profit.
Result: The market order closed only the remaining 70,000 GMYD (not the original 100,000 GMYD), because position TP/SL uses dynamic quantity at trigger time.
Lesson Learned: Position TP/SL is useful when you want to ensure your entire remaining position is protected, even if you partially close manually before the trigger.