Skip to main content

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:

ScenarioRecommendation
Take ProfitChoose Limit Price - this can guarantee a profit
Stop LossChoose Market Price - this can close quickly
Small PositionChoose Market Price
Large PositionChoose Limit Price or batch TP/SL
Poor Liquidity MarketChoose 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

ParameterDescription
PositionThe position to close
Trigger PricePrice at which TP/SL activates
Order PriceFor limit orders only - the price to place the order
Order QuantityFixed (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:

PositionTake ProfitStop Loss
Long (Sell Long)Last Price ≥ Trigger PriceLast Price ≤ Trigger Price
Short (Buy Short)Last Price ≤ Trigger PriceLast Price ≥ Trigger Price

When Trigger Price Type = Mark Price:

PositionTake ProfitStop Loss
Long (Sell Long)Mark Price ≥ Trigger PriceMark Price ≤ Trigger Price
Short (Buy Short)Mark Price ≤ Trigger PriceMark Price ≥ Trigger Price

Order After Trigger

When TP/SL is triggered, the system immediately submits an order with the following parameters:

ParameterValue
Order DirectionClosing direction (opposite of position)
Order PriceLimit: specified order price / Market: best available
Order Quantitymin(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:

ParameterValue
Trigger Price TypeLast Price
Trigger Price2.00 sCNH
Order Price1.99 sCNH
Order Quantity25,000 GMYD

Take Profit Order 2:

ParameterValue
Trigger Price TypeLast Price
Trigger Price2.10 sCNH
Order Price2.10 sCNH
Order Quantity25,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:

ParameterValue
Trigger Price TypeMark Price
Trigger Price1.85 sCNH
Order Quantity500,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:

  1. Using Mark Price trigger protected me from the flash crash on January 28
  2. 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:

ParameterValue
Trigger Price TypeMark Price
Trigger Price2.20 sCNH
Order TypeMarket
Order QuantityDynamic (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.