Skip to main content

Standalone (Direct) TPSL (Take Profit / Stop Loss)

guide to the Standalone (Direct) TPSL (Take Profit / Stop Loss)

Updated over 2 weeks ago

Overview

This page provides a complete guide to the Standalone TPSL feature on our exchange. It includes valid/invalid order input scenarios and behavior for Take Profit (TP), Stop Loss (SL), and combined TPSL (OCO) orders.

πŸ“š Background Info

Purpose of TPSL Orders

  • Close a position:

    • TP: Lock in profits when price hits target

    • SL: Prevent larger losses when price drops

  • Open a new position:

    • TP: Bet on mean reversion

    • SL: Bet on trend breakout

  • Attach to an open limit order:

    • TPSL instructions activate only after the parent limit order is filled

TPSL Types

  1. TP only

  2. SL only

  3. TP + SL (OCO combo)

  4. Preset TPSL on Main Limit Order (activates when Main Order is filled)

Parameters

  • Side: Buy / Sell ( Shared across TP & SL in TPSL combos)

  • Size: Shared across TP & SL

  • Trigger Type: Last Price

  • Trigger Price: TP or SL trigger level

  • Order Type: Limit or Market

  • Limit Price: Must not be >N% more aggressive than Trigger

Limitations

  1. Orders with trigger prices already met ("in-the-money") are rejected

  2. Limit orders may not execute due to price slippage

  3. Large orders may face liquidity issues

  4. OCO: if one order triggers and is only partially filled, the other is still canceled

βœ… TLDR: Validity Rules for TPSL / TP / SL Orders

  • A TP or SL order is invalid and must be rejected if its trigger condition is already satisfied by the current Last Traded Price.

  • A TPSL (TP + SL combo) is invalid if either the TP or SL condition is already satisfied by the current price.

Valid Trigger Price Conditions:

  • TP Trigger Price must be lower than Last Price for Buy Orders (i.e. Short position)

  • TP Trigger Price must be higher than Last Price for Sell Orders (i.e. Long position)

  • SL Trigger Price must be higher than Last Price for Buy Orders (i.e. Short position)

  • SL Trigger Price must be lower than Last Price for Sell Orders (i.e. Long position)

Button Behavior:

  • Buy button = Submits Buy Order = Implied Short Position

  • Sell button = Submits Sell Order = Implied Long Position

➑️ All examples below assume Trigger Price Type = Last Traded Price and TP/SL Order Type = Market. The same order validity rules applied to TP Order Type

= Limit and SL Order Type = Limit.

βœ… Valid TPSL Order Combos

🟦 Buy TPSL

  • Side: Buy

  • TP Trigger Price: 70000

  • SL Trigger Price: 90000

  • TP/SL Limit Price: null (Market order)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 2 orders:

    1. TP Order: Buy if Last Price <= 70000

    2. SL Order: Buy if Last Price >= 90000

  • OCO logic applies β€” when one is triggered, the other is canceled

βœ… TP valid: 70000 < 84000 βœ… SL valid: 90000 > 84000 βœ… SL > TP for Shorts: 90000 > 70000

πŸ”΄ Sell TPSL

  • Side: Sell

  • TP Trigger Price: 90000

  • SL Trigger Price: 70000

  • TP/SL Limit Price: null (Market order)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 2 orders:

    1. TP Order: Sell if Last Price >= 90000

    2. SL Order: Sell if Last Price <= 70000

  • OCO logic applies

βœ… TP valid: 90000 > 84000 βœ… SL valid: 70000 < 84000 βœ… SL < TP for Longs: 70000 < 90000


βœ… Valid TP-Only Orders

🟦 Buy TP Only

  • Side: Buy

  • TP Trigger Price: 70000

  • TP Limit Price: null (Market)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 1 order: Buy if Last Price <= 70000

βœ… TP valid: 70000 < 84000 (Short position)

πŸ”΄ Sell TP Only

  • Side: Sell

  • TP Trigger Price: 90000

  • TP Limit Price: null (Market)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 1 order: Sell if Last Price >= 90000

βœ… TP valid: 90000 > 84000 (Long position)

βœ… Valid SL-Only Orders

🟦 Buy SL Only

  • Side: Buy

  • SL Trigger Price: 90000

  • SL Limit Price: null (Market)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 1 order: Buy if Last Price >= 90000

βœ… SL valid: 90000 > 84000 (Short position)

πŸ”΄ Sell SL Only

  • Side: Sell

  • SL Trigger Price: 70000

  • SL Limit Price: null (Market)

  • Last Traded Price: 84000

Expected Behavior:

  • Submit 1 order: Sell if Last Price <= 70000

βœ… SL valid: 70000 < 84000 (Long position)

❌ Invalid TPSL Order Combos

πŸ”΄ Sell TPSL (Invalid)

  • Side: Sell

  • TP Trigger Price: 70000 ❌

  • SL Trigger Price: 90000 ❌

  • Last Traded Price: 84000

Rejection Reason:

  • TP invalid: 70000 < 84000 (TP must be higher for Sell)

  • SL invalid: 90000 > 84000 (SL must be lower for Sell)

  • SL < TP condition violated: 90000 < 70000 ❌

🟦 Buy TPSL (Invalid)

  • Side: Buy

  • TP Trigger Price: 90000 ❌

  • SL Trigger Price: 70000 ❌

  • Last Traded Price: 84000

Rejection Reason:

  • TP invalid: 90000 > 84000 (TP must be lower for Buy)

  • SL invalid: 70000 < 84000 (SL must be higher for Buy)

  • SL > TP condition violated: 70000 > 90000 ❌

Additional Information

  • Demo Video of Valid TPSL, TP, and SL Order Entry

  • PDF with same content as above, but with UI Screenshots:

Did this answer your question?