Order Types
VALR offers a multiple ways to execute trades on our exchange. Options include:
- Simple Buy/Sell
- Market
- Limit
- Stop-Loss and Take-Profit (deprecated)
- Conditional
- OCO (One Cancels the Other)
- OTOCO (One Triggers OCO)
- TWAP (Time-Weighted Average Price)
Additionally view our Perpetual Futures Order Types here
Simple Buy/Sell
The easiest way to swap one asset for another on VALR.
Simple buy/sell let's you swap a specific amount of one asset for another at the best price we can source from either the VALR exchange or our liquidity partners.
Simple orders have protections in place which limit a trader's ability to accept a quote that is significantly different from the current market price. If an order can only be filled at a price that is >2% away from the market price because of its size or lack of liquidity, a confirmation screen will be presented that lets you either cancel the order or accept slippage.
For example, swap 2,000 ZAR for BTC, receive a quote to receive 0.0028 BTC and confirm the swap.
This order type is available across all spot trading pairs.
Market
A market order executes immediately. All you have to do is enter how much you want to spend to either buy or sell an asset on VALR. This order is immediately placed on the exchange and filled at the best available price on the orderbook as a taker order.
For example, set a market order to spend R20,000 to buy BTC. A market order will spend R20,000 and give you as much BTC as possible at the best available price. The entire order will be filled, starting from the best offer to sell BTC. Market orders can fill at a range of prices through the orderbook.
This order type is available for all spot pairs that have orderbooks on VALR.
Limit
A limit order lets you define both the amount and price at which you wish to buy or sell an asset.
You will need to input two of three fields including (1) price, (2) amount in crypto and (3) total fiat amount of an order. Using a limit order means your order will only be completely filled when it either crosses the orderbook for the full amount to be traded or when an opposite order matches against it.
For example, set a limit order to sell 1 BTC at a price of R600,000 per BTC. That limit order will be sent to the exchange and will be executed either because:
- It crossed the orderbook and matched a bid (buy order) to buy BTC at or above R600,000 per BTC or;
- Another trade later decides to place an order that is willing to buy BTC at or above R600,000 per BTC.
This order type is available for all spot pairs that have orderbooks on VALR.
Stop-Loss and Take-Profit
This order type has been replaced by the Conditional order type. You can still manage existing Stop Loss and Take Profit orders from your Open Orders tab.
Conditional
A Conditional order allows you to instruct an order that will only place when a specific price condition is met. When a Trigger Price is reached, your order is placed on the exchange.
- Choose whether your Trigger Price runs off mark price or the last traded price on VALR.
- Choose whether the order that is placed will execute as a Market order or a Limit order with GTC (Good till Cancelled) expiry
Buy orders: specify a Take Profit trigger below current price (buy low) or a Stop Loss trigger above current price (buy high).
Sell orders: specify a Take Profit trigger above current price (sell high) or a Stop Loss trigger below current price (sell low).
- This order type is available for all spot pairs that have orderbooks on VALR
- You can use this order type for Margin Trading
- The balance expected to be spent for the order is immediately reserved on submission
- VALR's slippage protection mechanisms apply to triggered limit/market orders
- VALR does not guarantee the placement of your triggered order. Orders can fail or partially match for reasons such as slippage, rapid market movements, poor liquidity, insufficient user balances, insufficient borrow availability amongst other reasons.
OCO (One Cancel the Other)
An OCO order allows you to instruct two conditional orders, where if one of these orders is triggered, the other is immediately cancelled. This order type requires you to have a conditional with trigger above and a conditional with trigger below current price.
- Choose whether your Trigger Prices runs off mark price or the last traded price on VALR.
- Choose whether the order that is placed will execute as a Market order or a Limit order with GTC (Good till Cancelled) expiry
Buy orders: specify a Take Profit trigger below current price (buy low) and a Stop Loss trigger above current price (buy high).
Sell orders: specify a Take Profit trigger above current price (sell high) and a Stop Loss trigger below current price (sell low).
OCO Sell example:
Say you own 0.1 BTC and BTCUSDT is trading at 100,000. You want to set up a trade to sell your 0.1 BTC. You can set a Take Profit with Trigger 120,000 that places a Limit order at 119,000 and a Stop Loss with Trigger 90,000 that places a Market order.
If the price reaches 120,000, we will attempt to place a Limit order to sell your 0.1 BTC at 119,000 and cancel the Stop Loss. If the price reaches 90,000, we will attempt to place a Market order to sell your 0.1 BTC at best achievable price and cancel the Take Profit.
- This order type is available for all spot pairs that have orderbooks on VALR
- You can use this order type for Margin Trading
- The balance expected to be spent for the order is immediately reserved on submission
- VALR's slippage protection mechanisms apply to triggered limit/market orders
- VALR does not guarantee the placement of your triggered order. Orders can fail or partially match for reasons such as slippage, rapid market movements, poor liquidity, insufficient user balances, insufficient borrow availability amongst other reasons.
OTOCO (One Triggers One Cancels the Other)
An OTOCO is a powerful order type that aims to automate the entire lifecycle of a trade, from entry to exit, all in a single order submission.
It attaches a Conditional or OCO order to an ordinary Limit/Market order. The Conditional/OCO order only becomes active once the "parent" Limit/Market order is filled. You can attach the conditional during Limit/Market order submission or you can attach it later to unfilled GTC Limit orders.
The quantity of an OTOCO corresponds to the expected received amount from the "parent" Limit/Market order.
- For orders that immediately complete (e.g. Market orders, Limit orders that are IOC/FOK): If the trade is a non-margin trade, the quantity is exactly the received amount of the parent order after fees. If the trade is a margin trade, the quantity is the received amount before fees.
- For orders that do not immediately complete (e.g. Limit GTC orders): The quantity matches the expected receive amount based on the parent order configuration at the time of completion i.e. the order's price and quantity instruction. Modifying your parent order before completion may affect its price and quantity. Non-margin OCO quantities are capped at the Available balance at the time of completion.
OTOCO sell example
Parent order: Market sell 1 BTC on BTCUSDT (Current mark price = 100,000). Assume client has no BTC and this is a margin order
Attached OCO settings: Take Profit: 90,000 at Market, Stop Loss: 110,000 at Market
Assume the order matches completely at an average price 99,500. An OCO will be placed with size 99,500 USDT to buy BTC with Take Profit: 90000 and Stop Loss: 110,000
- This order type is available for all spot pairs that have orderbooks on VALR
- You can use this order type for Margin Trading
- The balance expected to be spent for the attached conditional order is not reserved until the parent order is completed.
- The Conditional/OCO order can fail to place for reasons such as insufficient user balances, insufficient borrow availability, early order cancellation amongst other reasons
- VALR's slippage protection mechanisms apply to triggered limit/market orders
- VALR does not guarantee the placement of your triggered order. Orders can fail or partially match for reasons such as slippage, rapid market movements, poor liquidity, insufficient user balances, insufficient borrow availability amongst other reasons.
TWAP (Time-Weighted Average Price)
TWAP is a type of order execution strategy that allows you to break up a large order into multiple smaller suborders that execute over a specified time period. This is useful when trying to minimize slippage as well as when trying to achieve an average price over a period.
The following inputs are required on a TWAP order:
- The total quantity that you wish to buy/sell
- The total running time over which you wish to execute the TWAP (up to 72 hours)
- The frequency (cadence) of the TWAP i.e. how often a suborder should be submitted
The TWAP will calculate how many suborders are expected by dividing the total running time by the frequency e.g. a 1 hour TWAP with 1 minute frequency will have 60 suborders. It will then aim to submit suborders for total TWAP quantity divided by the number of suborders. Suborders are placed with IOC (Immediate or Cancel) expiry.
There are optional configurations that you can add to your TWAP:
- You can add a limit price: All suborders will be placed as limit orders with the chosen limit price. If no limit price is chosen, orders are executed at Market.
- You can randomise your order: Each suborder will have a random factor applied to its quantity in order to obfuscate your TWAP execution. The total TWAP quantity will still be targeted.
- You can add a trigger price: The TWAP will only begin once the mark price of the pair reaches the trigger price. Thereafter the running time begins.
- TWAP is compatible with spot margin (by choosing to allow margin) and is also compatible with perpetual futures where reduce-only can be chosen.
The following are worth keeping in mind for TWAP orders:
- TWAP orders can be used on all VALR pairs that have order books. This includes spot, spot margin and perpetual futures.
- Balances are not reserved on TWAP submission. They are only checked and utilized for each suborder as its submitted to the exchange.
- VALR's slippage protection mechanisms apply to triggered limit/market orders
- VALR does not guarantee the execution or trigger of your order. Orders can fail or partially match for reasons such as slippage, rapid market movements, poor liquidity, insufficient user balances, insufficient borrow availability amongst other reasons.
Time in Force
The amount of time that an order will remain active can be edited for Limit and Stop-Limit order types.
- Good till Cancelled (default)
- Fill or Kill
- Immediate or Cancel (IOC)
Good till Cancelled
The default way to trade, which means that the order remains active until it is either filled or cancelled by you.
Fill or Kill
A fill or kill order is the opposite of a post only order. This order type will only be sent to the exchange if the full amount would cross the orderbook and be filled as a taker. Fill or kill implies that the whole order must be filled, if the order would only be partially filled the whole order will be cancelled.
For example, set a fill or kill limit order to buy 5 ETH at a price of R20,000 per ETH.
Placing a fill or kill buy order will be cancelled entirely if:
- The best offer to sell is at a price greater than 20,000 OR
- There is less than 5 ETH available on the orderbook at a price of at most R20,000.
Otherwise, that order will be filled in its entirety and the trader will receive 5 ETH minus fees.
This order type is available for all crypto to fiat pairs.
Immediate or Cancel (IOC)
An IOC order will only be sent to the exchange if at least some part of the order would cross the orderbook and be filled right away as a taker. IOC implies that a part of the order can be filled and also that any unfilled portion of the order will immediately be cancelled.
For example, refer to a theoretical VALR orderbook below:
Set an IOC limit order to sell 5 ETH at a price of R19,490 per ETH. This order will sell into the existing bids (buy orders) at any price greater than or equal to 19,490. The remainder of the order will be cancelled. In this example, 1 ETH will be traded and 4 ETH will be cancelled.
This order type is available for all crypto to fiat pairs.
Order Restrictions
The following limitations can be placed on orders:
- Reduce Only
- Post-Only
- Post-Only Reprice
Reduce Only (futures only)
selecting reduce only will ensure that any order placed can only reduce an existing position. Any orders that would increase a position will fail if they are reduce only.
When multiple reduce only orders are placed, priority is given to the orders closest to market price (more likely to be matched). Additional reduce only orders will have their quantities reduced or will be cancelled.
Post-Only
A post-only order is a limit order that is designed to avoid crossing the orderbook and as a consequence paying taker fees. A post-only will only be sent to the VALR exchange if it would not execute against an existing order immediately. If a post-only order would match immediately, it is cancelled.
For example, refer to a theoretical VALR orderbook below:
Setting a buy order at or below R600,000 using post-only mode will send that order to the exchange. Setting a buy order above that price will be cancelled.
Similarly, setting a sell order at or above R600,001 using post-only mode will send that order to the exchange, while setting a sell order below that price will be cancelled.
This order type is available for all exchange pairs.
Post-Only Reprice
Post-only reprice works similarly to post-only except for the fact that in scenarios where the order is placed at a price that would match, the order is instead repriced to a certain distance away from the other side of the book, as measured by tick size. The default is that the order is placed 1 tick away from the other side of the book if the order would otherwise match, however, the number of ticks away from the other side of the book can be configured via the VALR API.