We know that Time-in-Force Limit orders get expired after the set date arrives. Fill-or-Kill orders expire if not filled immediately. But what if your market order gets expired, how is that possible? The answer is simple: anti-slip protection.
To elaborate what it is, firstly we need to understand liquidity: let's define the term. Liquidity refers to the ease with which an asset can be bought or sold without affecting its market price. Basically, it can be used to measure the said asset's availability.
The assets you buy on an exchange aren't generated our of nowhere, every trade is done between two independent traders, and sometimes there are only so much people willing to trade at your desired price.
Let's say you want to buy 50 XYZ tokens (XYZ is a made-up token) at the current market price of 10 USDT. There are some orders in the ask side of the order book:
You could place a market buy order, which would generate two trades: 40 XYZ would be bought for a total of 400 USDT (1 XYZ = 10 USDT) and 10 more XYZ would be bought for 105 USDT (1 XYZ = 10.5 USDT). In the end, to get your 50 XYZ you would pay 505 USDT total.
But what if you tried to buy 100 XYZ instead?
If you don't keep liquidity in mind, you would expect to pay 1000 USDT (considering the market price is 10 USDT). But actually, it would look somewhat like this:
40x10 + 20x10.5 + 20x13 + 20x15 = 400+210+260+300 = 1170 USDT
In this case you lose 170 bucks just because you didn't check the available liquidity.
To prevent this from happening, we implemented anti-slip protection: if the execution price of a market order differs from the best price by more than 10%, the order won't be placed and its status will become expired.
Anti-slip protection may be triggered when you're trading a non-liquid market. Check the order book, is there enough to fill your order without the price slipping by more than 10%?
The fact that your order wasn't placed is actually a good thing: if it didn't cancel your order, you would suffer losses, so please always make sure there's enough liquidity in the books before making a trade.
A market order is an order to buy or sell an asset immediately. This type of order guarantees that the order will be executed, but does not guarantee the execution price. A market order generally will execute at or near the current bid (for a sell order) or ask (for a buy order) price.
If you want to buy/sell at a specific price, consider using a limit order instead.
More info on limit orders can be found here.